mirror of
https://github.com/gnosygnu/xowa.git
synced 2024-10-27 20:34:16 +00:00
Gui: Add initial support for night-mode
This commit is contained in:
parent
3e69a06434
commit
a28ba26ca6
@ -14,7 +14,10 @@ GPLv3 License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-GPLv3.txt
|
||||
Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
|
||||
*/
|
||||
package gplx.gfui.controls.gxws; import gplx.*; import gplx.gfui.*; import gplx.gfui.controls.*;
|
||||
import gplx.gfui.draws.*;
|
||||
public interface GxwComboBox extends GxwElem {
|
||||
ColorAdp Border_color();
|
||||
void Border_color_(ColorAdp v);
|
||||
int SelBgn(); void SelBgn_set(int v);
|
||||
int SelLen(); void SelLen_set(int v);
|
||||
void Sel_(int bgn, int end);
|
||||
|
@ -18,6 +18,7 @@ import java.awt.*;
|
||||
import java.awt.event.*;
|
||||
|
||||
import javax.swing.*;
|
||||
import gplx.gfui.draws.*;
|
||||
import gplx.gfui.ipts.*; import gplx.gfui.gfxs.*;
|
||||
public class GxwComboBox_lang extends JComboBox implements GxwComboBox, GxwElem, ActionListener {
|
||||
public String[] DataSource_as_str_ary() {return String_.Ary_empty;}
|
||||
@ -33,6 +34,7 @@ public class GxwComboBox_lang extends JComboBox implements GxwComboBox, GxwElem,
|
||||
obj = cb.getSelectedItem();
|
||||
*/
|
||||
}
|
||||
public ColorAdp Border_color() {return border_color;} public void Border_color_(ColorAdp v) {border_color = v;} private ColorAdp border_color;
|
||||
public int SelBgn() {return -1;} public void SelBgn_set(int v) {}
|
||||
public int SelLen() {return 0;} public void SelLen_set(int v) {}
|
||||
public void Sel_(int bgn, int end) {}
|
||||
|
@ -15,6 +15,7 @@ Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
|
||||
*/
|
||||
package gplx.gfui.controls.gxws; import gplx.*; import gplx.gfui.*; import gplx.gfui.controls.*;
|
||||
import gplx.gfui.ipts.*;
|
||||
import gplx.gfui.draws.*;
|
||||
public class GxwElem_mock_base implements GxwElem {
|
||||
public GxwCore_base Core() {return ctrlMgr;} final GxwCore_mock ctrlMgr = new GxwCore_mock();
|
||||
public GxwCbkHost Host() {return host;} public void Host_set(GxwCbkHost host) {this.host = host;} GxwCbkHost host = GxwCbkHost_.Null;
|
||||
@ -30,6 +31,7 @@ public class GxwElem_mock_base implements GxwElem {
|
||||
}
|
||||
class MockTextBox extends GxwElem_mock_base implements GxwTextFld {
|
||||
public boolean Border_on() {return borderOn;} public void Border_on_(boolean v) {borderOn = v;} private boolean borderOn = true;
|
||||
public ColorAdp Border_color() {return border_color;} public void Border_color_(ColorAdp v) {border_color = v;} private ColorAdp border_color;
|
||||
public boolean OverrideTabKey() {return false;} public void OverrideTabKey_(boolean v) {}
|
||||
public int SelBgn() {return selectionStart;} public void SelBgn_set(int v) {selectionStart = v;} int selectionStart;
|
||||
public int SelLen() {return selectionLength;} public void SelLen_set(int v) {selectionLength = v;} int selectionLength;
|
||||
@ -61,6 +63,7 @@ class MockTextBoxMulti extends MockTextBox implements GxwTextMemo, GxwTextHtml {
|
||||
public void ScrollTillCaretIsVisible() {}
|
||||
}
|
||||
class MockComboBox extends GxwElem_mock_base implements GxwComboBox {
|
||||
public ColorAdp Border_color() {return border_color;} public void Border_color_(ColorAdp v) {border_color = v;} private ColorAdp border_color;
|
||||
public int SelBgn() {return -1;} public void SelBgn_set(int v) {}
|
||||
public int SelLen() {return 0;} public void SelLen_set(int v) {}
|
||||
public void Sel_(int bgn, int end) {}
|
||||
|
@ -31,6 +31,7 @@ import javax.swing.KeyStroke;
|
||||
import javax.swing.border.BevelBorder;
|
||||
import javax.swing.border.Border;
|
||||
import javax.swing.text.JTextComponent;
|
||||
import gplx.gfui.draws.*;
|
||||
import gplx.gfui.ipts.*; import gplx.gfui.gfxs.*; import gplx.gfui.controls.elems.*;
|
||||
public class GxwTextBox_lang extends JTextArea implements GxwTextFld {
|
||||
public Object UnderElem() {return this;}
|
||||
@ -48,6 +49,7 @@ public class GxwTextBox_lang extends JTextArea implements GxwTextFld {
|
||||
Border border = v ? BorderFactory.createLineBorder(Color.BLACK, 1) : null;
|
||||
this.setBorder(border);
|
||||
}
|
||||
public ColorAdp Border_color() {return border_color;} public void Border_color_(ColorAdp v) {border_color = v;} private ColorAdp border_color;
|
||||
public void Margins_set(int left, int top, int right, int bot) {}
|
||||
public boolean OverrideTabKey() {return overrideTabKey;} boolean overrideTabKey;
|
||||
public void OverrideTabKey_(boolean val) {
|
||||
@ -124,6 +126,7 @@ class GxwTextFld_cls_lang extends JTextField implements GxwTextFld {
|
||||
Border border = v ? BorderFactory.createLineBorder(Color.BLACK) : null;
|
||||
this.setBorder(border);
|
||||
} boolean borderOn = true;
|
||||
public ColorAdp Border_color() {return border_color;} public void Border_color_(ColorAdp v) {border_color = v;} private ColorAdp border_color;
|
||||
public void Margins_set(int left, int top, int right, int bot) {}
|
||||
public boolean OverrideTabKey() {return overrideTabKey;}
|
||||
public void OverrideTabKey_(boolean val) {
|
||||
|
@ -14,8 +14,10 @@ GPLv3 License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-GPLv3.txt
|
||||
Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
|
||||
*/
|
||||
package gplx.gfui.controls.gxws; import gplx.*; import gplx.gfui.*; import gplx.gfui.controls.*;
|
||||
import gplx.gfui.draws.*;
|
||||
public interface GxwTextFld extends GxwElem {
|
||||
boolean Border_on(); void Border_on_(boolean v);
|
||||
ColorAdp Border_color(); void Border_color_(ColorAdp v);
|
||||
int SelBgn(); void SelBgn_set(int v);
|
||||
int SelLen(); void SelLen_set(int v);
|
||||
void CreateControlIfNeeded();
|
||||
|
@ -60,6 +60,7 @@ import javax.swing.text.html.HTMLEditorKit;
|
||||
import javax.swing.text.html.HTMLEditorKit.HTMLFactory;
|
||||
import javax.swing.text.html.InlineView;
|
||||
import javax.swing.text.html.StyleSheet;
|
||||
import gplx.gfui.draws.*;
|
||||
import gplx.gfui.ipts.*; import gplx.gfui.gfxs.*;
|
||||
public class GxwTextHtml_lang extends JScrollPane implements GxwTextHtml {
|
||||
@Override public GxwCore_base Core() {return core;} GxwCore_host core;
|
||||
@ -73,6 +74,7 @@ public class GxwTextHtml_lang extends JScrollPane implements GxwTextHtml {
|
||||
// Border border = v ? BorderFactory.createLineBorder(Color.BLACK) : null;
|
||||
// this.setBorder(border);
|
||||
}
|
||||
public ColorAdp Border_color() {return border_color;} public void Border_color_(ColorAdp v) {border_color = v;} private ColorAdp border_color;
|
||||
@Override public boolean OverrideTabKey() {return false;}
|
||||
@Override public void OverrideTabKey_(boolean v) {}
|
||||
@Override public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {return null;}
|
||||
@ -139,8 +141,9 @@ class GxwTextHtml_editor extends JEditorPane implements GxwTextHtml {
|
||||
@Override public void Border_on_(boolean v) {
|
||||
borderOn = v;
|
||||
Border border = v ? BorderFactory.createLineBorder(Color.BLACK) : null;
|
||||
this.setBorder(border);
|
||||
}
|
||||
this.setBorder(border);
|
||||
}
|
||||
public ColorAdp Border_color() {return border_color;} public void Border_color_(ColorAdp v) {border_color = v;} private ColorAdp border_color;
|
||||
@Override public boolean OverrideTabKey() {return false;}
|
||||
@Override public void OverrideTabKey_(boolean v) {}
|
||||
@Override public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {return null;}
|
||||
|
@ -267,6 +267,7 @@ public class GxwTextMemo_lang extends JScrollPane implements GxwTextMemo {
|
||||
// return charactersPastEndOfLine == String_.NewLine ? lineLength + newLineLength : lineLength;
|
||||
}
|
||||
public boolean Border_on() {return txt_box.Border_on();} public void Border_on_(boolean v) {txt_box.Border_on_(v);}
|
||||
public ColorAdp Border_color() {return border_color;} public void Border_color_(ColorAdp v) {border_color = v;} private ColorAdp border_color;
|
||||
public void CreateControlIfNeeded() {txt_box.CreateControlIfNeeded();}
|
||||
public boolean OverrideTabKey() {return txt_box.OverrideTabKey();}
|
||||
public void OverrideTabKey_(boolean v) {
|
||||
|
@ -16,8 +16,11 @@ Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
|
||||
package gplx.gfui.controls.gxws; import gplx.*; import gplx.gfui.*; import gplx.gfui.controls.*;
|
||||
import gplx.gfui.draws.*; import gplx.gfui.controls.standards.*;
|
||||
public interface Gxw_tab_mgr extends GxwElem {
|
||||
ColorAdp Btns_selected_color(); void Btns_selected_color_(ColorAdp v);
|
||||
ColorAdp Btns_unselected_color(); void Btns_unselected_color_(ColorAdp v);
|
||||
ColorAdp Btns_selected_background(); void Btns_selected_background_(ColorAdp v);
|
||||
ColorAdp Btns_selected_foreground(); void Btns_selected_foreground_(ColorAdp v);
|
||||
ColorAdp Btns_unselected_background(); void Btns_unselected_background_(ColorAdp v);
|
||||
ColorAdp Btns_unselected_foreground(); void Btns_unselected_foreground_(ColorAdp v);
|
||||
|
||||
int Btns_height(); void Btns_height_(int v);
|
||||
boolean Btns_place_on_top(); void Btns_place_on_top_(boolean v);
|
||||
boolean Btns_curved(); void Btns_curved_(boolean v);
|
||||
|
@ -14,6 +14,7 @@ GPLv3 License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-GPLv3.txt
|
||||
Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
|
||||
*/
|
||||
package gplx.gfui.controls.standards; import gplx.*; import gplx.gfui.*; import gplx.gfui.controls.*;
|
||||
import gplx.gfui.draws.*;
|
||||
import gplx.gfui.kits.core.*; import gplx.gfui.controls.gxws.*; import gplx.gfui.controls.elems.*;
|
||||
public class GfuiComboBox extends GfuiElemBase {
|
||||
@Override public void ctor_GfuiBox_base(Keyval_hash ctorArgs) {
|
||||
@ -21,6 +22,7 @@ public class GfuiComboBox extends GfuiElemBase {
|
||||
this.combo = (GxwComboBox)this.UnderElem();
|
||||
}
|
||||
@Override public GxwElem UnderElem_make(Keyval_hash ctorArgs) {return GxwElemFactory_.Instance.comboBox_();} private GxwComboBox combo;
|
||||
public ColorAdp Border_color() {return combo.Border_color();} public void Border_color_(ColorAdp v) {combo.Border_color_(v);}
|
||||
public int SelBgn() {return combo.SelBgn();} public void SelBgn_set(int v) {combo.SelBgn_set(v); Gfo_evt_mgr_.Pub(this, Evt__selection_start_changed);}
|
||||
public int SelLen() {return combo.SelLen();} public void SelLen_set(int v) {combo.SelLen_set(v);}
|
||||
public void Sel_(int bgn, int len) {combo.Sel_(bgn, len);}
|
||||
|
@ -14,11 +14,13 @@ GPLv3 License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-GPLv3.txt
|
||||
Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
|
||||
*/
|
||||
package gplx.gfui.controls.standards; import gplx.*; import gplx.gfui.*; import gplx.gfui.controls.*;
|
||||
import gplx.gfui.draws.*;
|
||||
import gplx.gfui.kits.core.*; import gplx.gfui.controls.gxws.*; import gplx.gfui.controls.elems.*;
|
||||
public class GfuiTextBox extends GfuiElemBase {
|
||||
public static final String SelectionStartChanged_evt = "SelectionStartChanged";
|
||||
|
||||
public boolean Border_on() {return textBox.Border_on();} public void Border_on_(boolean v) {BorderOn_set(v);}
|
||||
public ColorAdp Border_color() {return textBox.Border_color();} public void Border_color_(ColorAdp v) {textBox.Border_color_(v);}
|
||||
public int SelBgn() {return textBox.SelBgn();} public void SelBgn_set(int v) {textBox.SelBgn_set(v); Gfo_evt_mgr_.Pub(this, SelectionStartChanged_evt);}
|
||||
public int SelLen() {return textBox.SelLen();} public void SelLen_set(int v) {textBox.SelLen_set(v);}
|
||||
public String SelText() {
|
||||
|
@ -17,8 +17,10 @@ package gplx.gfui.controls.standards; import gplx.*; import gplx.gfui.*; import
|
||||
import gplx.gfui.draws.*; import gplx.gfui.kits.core.*; import gplx.gfui.controls.gxws.*; import gplx.gfui.controls.elems.*;
|
||||
public class Gfui_tab_mgr extends GfuiElemBase {
|
||||
public void Under_tab_mgr_(Gxw_tab_mgr v) {under = v;} private Gxw_tab_mgr under;
|
||||
public ColorAdp Btns_selected_color() {return under.Btns_selected_color();} public void Btns_selected_color_(ColorAdp v) {under.Btns_selected_color_(v);}
|
||||
public ColorAdp Btns_unselected_color() {return under.Btns_unselected_color();} public void Btns_unselected_color_(ColorAdp v) {under.Btns_unselected_color_(v);}
|
||||
public ColorAdp Btns_selected_background() {return under.Btns_selected_background();} public void Btns_selected_background_(ColorAdp v) {under.Btns_selected_background_(v);}
|
||||
public ColorAdp Btns_selected_foreground() {return under.Btns_selected_foreground();} public void Btns_selected_foreground_(ColorAdp v) {under.Btns_selected_foreground_(v);}
|
||||
public ColorAdp Btns_unselected_background() {return under.Btns_unselected_background();} public void Btns_unselected_background_(ColorAdp v) {under.Btns_unselected_background_(v);}
|
||||
public ColorAdp Btns_unselected_foreground() {return under.Btns_unselected_foreground();} public void Btns_unselected_foreground_(ColorAdp v) {under.Btns_unselected_foreground_(v);}
|
||||
public Gfui_tab_itm Tabs_add(Gfui_tab_itm_data tab_data) {
|
||||
Gxw_tab_itm tab_itm = under.Tabs_add(tab_data);
|
||||
return Gfui_tab_itm.kit_(this.Kit(), tab_data.Key(), tab_itm, new Keyval_hash());
|
||||
|
@ -48,8 +48,10 @@ class Mem_html extends GxwTextMemo_lang implements Gxw_html { public void Html_
|
||||
this.ctor_MsTextBoxMultiline_();
|
||||
}
|
||||
}
|
||||
class Mem_tab_mgr extends GxwElem_mock_base implements Gxw_tab_mgr { public ColorAdp Btns_selected_color() {return btns_selected_color;} public void Btns_selected_color_(ColorAdp v) {btns_selected_color = v;} private ColorAdp btns_selected_color;
|
||||
public ColorAdp Btns_unselected_color() {return btns_unselected_color;} public void Btns_unselected_color_(ColorAdp v) {btns_unselected_color = v;} private ColorAdp btns_unselected_color;
|
||||
class Mem_tab_mgr extends GxwElem_mock_base implements Gxw_tab_mgr { public ColorAdp Btns_selected_background() {return btns_selected_background;} public void Btns_selected_background_(ColorAdp v) {btns_selected_background = v;} private ColorAdp btns_selected_background;
|
||||
public ColorAdp Btns_selected_foreground() {return btns_selected_foreground;} public void Btns_selected_foreground_(ColorAdp v) {btns_selected_foreground = v;} private ColorAdp btns_selected_foreground;
|
||||
public ColorAdp Btns_unselected_background() {return btns_unselected_background;} public void Btns_unselected_background_(ColorAdp v) {btns_unselected_background = v;} private ColorAdp btns_unselected_background;
|
||||
public ColorAdp Btns_unselected_foreground() {return btns_unselected_foreground;} public void Btns_unselected_foreground_(ColorAdp v) {btns_unselected_foreground = v;} private ColorAdp btns_unselected_foreground;
|
||||
public Gxw_tab_itm Tabs_add(Gfui_tab_itm_data tab_data) {return new Mem_tab_itm();}
|
||||
public void Tabs_select_by_idx(int i) {}
|
||||
public void Tabs_close_by_idx(int i) {}
|
||||
|
@ -196,7 +196,7 @@ public class Swt_kit implements Gfui_kit {
|
||||
for (int i = 0; i < args_len; i++)
|
||||
ctor_args.Add(args[i]);
|
||||
boolean border_on = Bool_.Cast(ctor_args.Get_val_or(GfuiTextBox.CFG_border_on_, true));
|
||||
GxwTextFld under = new Swt_text_w_border(Swt_control_.cast_or_fail(owner), New_color(border_on ? ColorAdp_.LightGray : ColorAdp_.White), ctor_args);
|
||||
GxwTextFld under = new Swt_text_w_border(this, Swt_control_.cast_or_fail(owner), New_color(border_on ? ColorAdp_.LightGray : ColorAdp_.White), ctor_args);
|
||||
GfuiTextBox rv = GfuiTextBox_.kit_(this, key, under, ctor_args);
|
||||
rv.Owner_(owner);
|
||||
ctor_args.Clear();
|
||||
@ -211,7 +211,7 @@ public class Swt_kit implements Gfui_kit {
|
||||
return rv;
|
||||
}
|
||||
public GfuiComboBox New_combo(String key, GfuiElem owner, Keyval... args) {
|
||||
Swt_combo_ctrl rv_swt = new Swt_combo_ctrl(Swt_control_.cast_or_fail(owner), this.New_color(ColorAdp_.LightGray), ctor_args);
|
||||
Swt_combo_ctrl rv_swt = new Swt_combo_ctrl(this, Swt_control_.cast_or_fail(owner), this.New_color(ColorAdp_.LightGray), ctor_args);
|
||||
GfuiComboBox rv = GfuiComboBox.kit_(this, key, rv_swt, ctor_args);
|
||||
rv.Owner_(owner);
|
||||
rv_swt.Evt_mgr_(rv.Evt_mgr());
|
||||
|
@ -27,6 +27,7 @@ import gplx.gfui.imgs.ImageAdp;
|
||||
import org.eclipse.swt.SWT;
|
||||
import org.eclipse.swt.graphics.Cursor;
|
||||
import org.eclipse.swt.graphics.Image;
|
||||
import org.eclipse.swt.graphics.ImageData;
|
||||
import org.eclipse.swt.graphics.Rectangle;
|
||||
import org.eclipse.swt.widgets.Composite;
|
||||
import org.eclipse.swt.widgets.Control;
|
||||
@ -61,15 +62,24 @@ public class Swt_btn_no_border implements GxwElem, Swt_control {
|
||||
private void Btn_img_(ImageAdp v) {
|
||||
if (box_btn == null || v == null) return;
|
||||
SizeAdp size = core.Size();
|
||||
box_btn.setImage((Image)v.Resize(size.Width(), size.Height()).Under());
|
||||
v = v.Resize(size.Width(), size.Height());
|
||||
box_btn.setImage(Copy_w_transparency((Image)v.Under()));
|
||||
}
|
||||
private Image Copy_w_transparency(Image src) {
|
||||
// set transparency
|
||||
ImageData imageData = src.getImageData();
|
||||
imageData.transparentPixel = imageData.getPixel(0, 0);
|
||||
|
||||
// create new image with transparency set
|
||||
Image trg = new Image(box_grp.getDisplay(), imageData);
|
||||
src.dispose();
|
||||
return trg;
|
||||
}
|
||||
private void Make_btn_no_border(Display display, Shell shell, Composite owner) {
|
||||
box_grp = new Composite(owner, SWT.FLAT);
|
||||
box_btn = new Label(box_grp, SWT.FLAT);
|
||||
box_grp.setSize(16, 16);
|
||||
box_btn.setSize(16, 16);
|
||||
box_grp.setBackground(display.getSystemColor(SWT.COLOR_WHITE));
|
||||
box_btn.setBackground(display.getSystemColor(SWT.COLOR_WHITE));
|
||||
box_btn.addFocusListener(new Swt_clabel_lnr_focus(box_grp));
|
||||
}
|
||||
}
|
||||
|
@ -29,6 +29,7 @@ import gplx.gfui.controls.gxws.GxwComboBox;
|
||||
import gplx.gfui.controls.gxws.GxwCore_base;
|
||||
import gplx.gfui.controls.gxws.GxwElem;
|
||||
import gplx.gfui.controls.standards.GfuiComboBox;
|
||||
import gplx.gfui.draws.ColorAdp;
|
||||
|
||||
import org.eclipse.swt.SWT;
|
||||
import org.eclipse.swt.events.SelectionEvent;
|
||||
@ -47,6 +48,7 @@ class Swt_combo implements GxwElem, GxwComboBox, Swt_control, Gfo_evt_mgr_owner
|
||||
combo.addMouseListener(new Swt_lnr_mouse(this));
|
||||
combo.addSelectionListener(new Swt_combo__selection_listener(this));
|
||||
}
|
||||
public ColorAdp Border_color() {return border_color;} public void Border_color_(ColorAdp v) {border_color = v;} private ColorAdp border_color;
|
||||
@Override public Gfo_evt_mgr Evt_mgr() {return ev_mgr;} private Gfo_evt_mgr ev_mgr; public void Evt_mgr_(Gfo_evt_mgr v) {ev_mgr = v;}
|
||||
@Override public Control Under_control() {return combo;}
|
||||
@Override public Control Under_menu_control() {return combo;}
|
||||
|
@ -21,6 +21,7 @@ import gplx.core.threads.Thread_adp_;
|
||||
import gplx.gfui.controls.gxws.GxwComboBox;
|
||||
import gplx.gfui.controls.gxws.GxwElem;
|
||||
import gplx.gfui.controls.standards.GfuiComboBox;
|
||||
import gplx.gfui.kits.core.Swt_kit;
|
||||
|
||||
import org.eclipse.swt.SWT;
|
||||
import org.eclipse.swt.events.SelectionEvent;
|
||||
@ -43,8 +44,8 @@ import org.eclipse.swt.widgets.Text;
|
||||
public class Swt_combo_ctrl extends Swt_text_w_border implements GxwElem, GxwComboBox, Swt_control, Gfo_evt_mgr_owner { // REF: https://www.eclipse.org/forums/index.php/t/351029/; http://git.eclipse.org/c/platform/eclipse.platform.swt.git/tree/examples/org.eclipse.swt.snippets/src/org/eclipse/swt/snippets/Snippet320.java
|
||||
private final Text swt_text;
|
||||
private final Swt_combo_list list;
|
||||
public Swt_combo_ctrl(Swt_control owner, Color color, Keyval_hash ctorArgs) {
|
||||
super(owner, color, new Keyval_hash());
|
||||
public Swt_combo_ctrl(Swt_kit kit, Swt_control owner, Color color, Keyval_hash ctorArgs) {
|
||||
super(kit, owner, color, new Keyval_hash());
|
||||
Display display = owner.Under_control().getDisplay();
|
||||
Shell shell = owner.Under_control().getShell();
|
||||
this.swt_text = super.Under_text();
|
||||
|
@ -102,7 +102,7 @@ abstract class Swt_core__base extends GxwCore_base {
|
||||
@Override public void Zorder_front() {} // TODO.FUTURE: Canvas c; c.moveAbove(arg0);
|
||||
@Override public void Zorder_back() {} // TODO.FUTURE: Canvas c; c.moveBelow(arg0);
|
||||
|
||||
private static ColorAdp To_color_gfui(Color v) {return ColorAdp_.new_(0, v.getRed(), v.getGreen(), v.getBlue());}
|
||||
protected static ColorAdp To_color_gfui(Color v) {return ColorAdp_.new_(0, v.getRed(), v.getGreen(), v.getBlue());}
|
||||
protected static Color To_color_swt(Control control, ColorAdp v) {return new Color(control.getDisplay(), v.Red(), v.Green(), v.Blue());}
|
||||
private static FontAdp Control_font_get(Font font, GxwCore_base owner) {
|
||||
FontData fontData = font.getFontData()[0];
|
||||
|
@ -15,7 +15,9 @@ Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
|
||||
*/
|
||||
package gplx.gfui.kits.swts; import gplx.*; import gplx.gfui.*; import gplx.gfui.kits.*;
|
||||
import org.eclipse.swt.widgets.*;
|
||||
import org.eclipse.swt.graphics.Color;
|
||||
import gplx.gfui.controls.gxws.*;
|
||||
import gplx.gfui.draws.ColorAdp;
|
||||
|
||||
class Swt_core__dual extends Swt_core__base {
|
||||
private final Control outer, inner;
|
||||
@ -29,6 +31,18 @@ class Swt_core__dual extends Swt_core__base {
|
||||
@Override public void Height_set(int v) {super.Height_set(v); Swt_control_.H_set(outer, v + inner_adj_h);}
|
||||
@Override public void Size_set(SizeAdp v) {super.Size_set(v); Swt_control_.Size_set(inner, v.Width() + inner_adj_w, v.Height() + inner_adj_h);}
|
||||
@Override public void Rect_set(RectAdp v) {super.Rect_set(v); Swt_control_.Size_set(inner, v.Width() + inner_adj_w, v.Height() + inner_adj_h);}
|
||||
@Override public ColorAdp BackColor() {return To_color_gfui(inner.getBackground());}
|
||||
@Override public void BackColor_set(ColorAdp v) {
|
||||
Color color = To_color_swt(inner, v);
|
||||
inner.setBackground(color);
|
||||
outer.setBackground(color);
|
||||
}
|
||||
@Override public ColorAdp ForeColor() {return To_color_gfui(inner.getForeground());}
|
||||
@Override public void ForeColor_set(ColorAdp v) {
|
||||
Color color = To_color_swt(inner, v);
|
||||
inner.setForeground(color);
|
||||
outer.setForeground(color);
|
||||
}
|
||||
|
||||
@Override public void Invalidate() {outer.update(); inner.update();}
|
||||
@Override public void Dispose() {outer.dispose(); inner.dispose();}
|
||||
|
@ -53,11 +53,17 @@ class Swt_core__frames extends Swt_core__base {
|
||||
@Override public void Width_set(int v) {super.Width_set(v); Frames_w_set(v);}
|
||||
@Override public void Height_set(int v) {super.Height_set(v); Frames_h_set(v);}
|
||||
@Override public void Size_set(SizeAdp v) {super.Size_set(v); Frames_size_set(v);}
|
||||
@Override public void Rect_set(RectAdp v) {super.Rect_set(v); Frames_size_set(v.Size());}
|
||||
@Override public void Rect_set(RectAdp v) {super.Rect_set(v); Frames_size_set(v.Size());}
|
||||
@Override public void BackColor_set(ColorAdp v) {
|
||||
Color color = Swt_core__base.To_color_swt(outer, v);
|
||||
for (int i = 0; i < frames_len; i++)
|
||||
for (int i = 0; i < frames_len; i++) {
|
||||
frames[i].Item().setBackground(color);
|
||||
}
|
||||
}
|
||||
@Override public void ForeColor_set(ColorAdp v) {
|
||||
Color color = Swt_core__base.To_color_swt(outer, v);
|
||||
for (int i = 0; i < frames_len; i++)
|
||||
frames[i].Item().setForeground(color);
|
||||
}
|
||||
@Override public void Controls_add(GxwElem sub) {throw Err_.new_unimplemented();}
|
||||
@Override public void Controls_del(GxwElem sub) {}
|
||||
|
@ -60,30 +60,32 @@ public class Swt_tab_mgr implements Gxw_tab_mgr, Swt_control, FocusListener, Gfo
|
||||
@Override public Control Under_menu_control() {return tab_folder;}
|
||||
public Gfo_evt_mgr Evt_mgr() {return ev_mgr;} private Gfo_evt_mgr ev_mgr;
|
||||
public void Evt_mgr_(Gfo_evt_mgr v) {ev_mgr = v;}
|
||||
public ColorAdp Btns_selected_color() {return btns_selected_color;} private ColorAdp btns_selected_color;
|
||||
public void Btns_selected_color_(ColorAdp v) {
|
||||
btns_selected_color = v;
|
||||
tab_folder.setSelectionBackground(kit.New_color(v));
|
||||
}
|
||||
public ColorAdp Btns_unselected_color() {return btns_unselected_color;}
|
||||
public void Btns_unselected_color_(ColorAdp v) {
|
||||
btns_unselected_color = v;
|
||||
tab_folder.setBackground(kit.New_color(v));
|
||||
} private ColorAdp btns_unselected_color;
|
||||
@Override public boolean Btns_curved() {return tab_folder.getSimple();} @Override public void Btns_curved_(boolean v) {tab_folder.setSimple(!v);}
|
||||
@Override public boolean Btns_place_on_top() {return tab_folder.getTabPosition() == SWT.TOP;}
|
||||
@Override public void Btns_place_on_top_(boolean v) {tab_folder.setTabPosition(v ? SWT.TOP : SWT.BOTTOM); tab_folder.layout();}
|
||||
@Override public int Btns_height() {return tab_folder.getTabHeight();} @Override public void Btns_height_(int v) {tab_folder.setTabHeight(v); tab_folder.layout();}
|
||||
@Override public boolean Btns_close_visible() {return btns_close_visible;} private boolean btns_close_visible = true;
|
||||
@Override public void Btns_close_visible_(boolean v) {
|
||||
|
||||
public ColorAdp Btns_selected_foreground() {return btns_selected_foreground;} private ColorAdp btns_selected_foreground;
|
||||
public void Btns_selected_foreground_(ColorAdp v) {btns_selected_foreground = v; tab_folder.setSelectionForeground(kit.New_color(v));}
|
||||
public ColorAdp Btns_selected_background() {return btns_selected_background;} private ColorAdp btns_selected_background;
|
||||
public void Btns_selected_background_(ColorAdp v) {btns_selected_background = v; tab_folder.setSelectionBackground(kit.New_color(v));}
|
||||
public ColorAdp Btns_unselected_foreground() {return btns_unselected_foreground;} private ColorAdp btns_unselected_foreground;
|
||||
public void Btns_unselected_foreground_(ColorAdp v) {btns_unselected_foreground = v; tab_folder.setForeground(kit.New_color(v));}
|
||||
public ColorAdp Btns_unselected_background() {return btns_unselected_background;} private ColorAdp btns_unselected_background;
|
||||
public void Btns_unselected_background_(ColorAdp v) {btns_unselected_background = v; tab_folder.setBackground(kit.New_color(v));}
|
||||
public boolean Btns_curved() {return tab_folder.getSimple();}
|
||||
public void Btns_curved_(boolean v) {tab_folder.setSimple(!v);}
|
||||
public boolean Btns_place_on_top() {return tab_folder.getTabPosition() == SWT.TOP;}
|
||||
public void Btns_place_on_top_(boolean v) {tab_folder.setTabPosition(v ? SWT.TOP : SWT.BOTTOM); tab_folder.layout();}
|
||||
public int Btns_height() {return tab_folder.getTabHeight();}
|
||||
public void Btns_height_(int v) {tab_folder.setTabHeight(v); tab_folder.layout();}
|
||||
public boolean Btns_close_visible() {return btns_close_visible;} private boolean btns_close_visible = true;
|
||||
public void Btns_close_visible_(boolean v) {
|
||||
this.btns_close_visible = v;
|
||||
CTabItem[] itms = tab_folder.getItems();
|
||||
int len = itms.length;
|
||||
for (int i = 0; i < len; i++)
|
||||
itms[i].setShowClose(v);
|
||||
}
|
||||
@Override public boolean Btns_unselected_close_visible() {return tab_folder.getUnselectedCloseVisible();} @Override public void Btns_unselected_close_visible_(boolean v) {
|
||||
tab_folder.setUnselectedCloseVisible(v);}
|
||||
public boolean Btns_unselected_close_visible() {return tab_folder.getUnselectedCloseVisible();}
|
||||
public void Btns_unselected_close_visible_(boolean v) {tab_folder.setUnselectedCloseVisible(v);}
|
||||
|
||||
@Override public Gxw_tab_itm Tabs_add(Gfui_tab_itm_data tab_data) {
|
||||
Swt_tab_itm rv = new Swt_tab_itm(this, kit, tab_folder, tab_data);
|
||||
rv.Under_CTabItem().setData(tab_data);
|
||||
|
@ -18,6 +18,7 @@ import gplx.gfui.controls.gxws.GxwCbkHost;
|
||||
import gplx.gfui.controls.gxws.GxwCore_base;
|
||||
import gplx.gfui.controls.gxws.GxwTextFld;
|
||||
import gplx.gfui.controls.standards.GfuiTextBox_;
|
||||
import gplx.gfui.draws.ColorAdp;
|
||||
|
||||
import org.eclipse.swt.SWT;
|
||||
import org.eclipse.swt.events.KeyEvent;
|
||||
@ -58,6 +59,7 @@ public class Swt_text implements GxwTextFld, Swt_control {
|
||||
@Override public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {return null;}
|
||||
public void Margins_set(int left, int top, int right, int bot) {}
|
||||
@Override public boolean Border_on() {return false;} @Override public void Border_on_(boolean v) {} // SWT_TODO:borderWidth doesn't seem mutable
|
||||
public ColorAdp Border_color() {return border_color;} public void Border_color_(ColorAdp v) {border_color = v;} private ColorAdp border_color;
|
||||
@Override public void CreateControlIfNeeded() {}
|
||||
@Override public boolean OverrideTabKey() {return false;} @Override public void OverrideTabKey_(boolean v) {}
|
||||
}
|
||||
|
@ -14,10 +14,12 @@ GPLv3 License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-GPLv3.txt
|
||||
Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
|
||||
*/
|
||||
package gplx.gfui.kits.swts; import gplx.*; import gplx.gfui.*; import gplx.gfui.kits.*;
|
||||
import gplx.gfui.kits.core.Swt_kit;
|
||||
import gplx.gfui.controls.gxws.GxwCbkHost;
|
||||
import gplx.gfui.controls.gxws.GxwCore_base;
|
||||
import gplx.gfui.controls.gxws.GxwTextFld;
|
||||
import gplx.gfui.controls.standards.GfuiTextBox_;
|
||||
import gplx.gfui.draws.ColorAdp;
|
||||
|
||||
import org.eclipse.swt.SWT;
|
||||
import org.eclipse.swt.events.TraverseEvent;
|
||||
@ -34,10 +36,12 @@ import org.eclipse.swt.widgets.Shell;
|
||||
import org.eclipse.swt.widgets.Text;
|
||||
|
||||
public class Swt_text_w_border implements GxwTextFld, Swt_control {
|
||||
private final Swt_kit kit;
|
||||
private Composite text_host;
|
||||
private Composite text_margin;
|
||||
private Text text_elem;
|
||||
public Swt_text_w_border(Swt_control owner_control, Color color, Keyval_hash ctorArgs) {
|
||||
public Swt_text_w_border(Swt_kit kit, Swt_control owner_control, Color color, Keyval_hash ctorArgs) {
|
||||
this.kit = kit;
|
||||
Composite owner = owner_control.Under_composite();
|
||||
int text_elem_style = ctorArgs.Has(GfuiTextBox_.Ctor_Memo) ? SWT.MULTI | SWT.WRAP | SWT.V_SCROLL : SWT.FLAT;
|
||||
New_box_text_w_border(owner.getDisplay(), owner, text_elem_style, color);
|
||||
@ -69,17 +73,20 @@ public class Swt_text_w_border implements GxwTextFld, Swt_control {
|
||||
public void Margins_set(int left, int top, int right, int bot) {
|
||||
this.margins_l = left; this.margins_t = top; this.margins_r = right; this.margins_b = bot;
|
||||
}
|
||||
@Override public boolean Border_on() {return false;} @Override public void Border_on_(boolean v) {} // SWT_TODO:borderWidth doesn't seem mutable
|
||||
@Override public boolean Border_on() {return false;}
|
||||
@Override public void Border_on_(boolean v) {} // SWT_TODO:borderWidth doesn't seem mutable
|
||||
public ColorAdp Border_color() {return border_color;} private ColorAdp border_color;
|
||||
public void Border_color_(ColorAdp v) {
|
||||
this.border_color = v; text_host.setBackground(kit.New_color(v));
|
||||
}
|
||||
@Override public void CreateControlIfNeeded() {}
|
||||
@Override public boolean OverrideTabKey() {return false;} @Override public void OverrideTabKey_(boolean v) {}
|
||||
private void New_box_text_w_border(Display display, Composite owner, int style, Color color) {
|
||||
private void New_box_text_w_border(Display display, Composite owner, int style, Color border_color) {
|
||||
text_host = new Composite(owner, SWT.FLAT);
|
||||
text_margin = new Composite(text_host, SWT.FLAT);
|
||||
text_elem = new Text(text_margin, style);
|
||||
text_elem .addTraverseListener(Swt_lnr_traverse_ignore_ctrl.Instance); // do not allow ctrl+tab to change focus when pressed in text box; allows ctrl+tab to be used by other bindings; DATE:2014-04-30
|
||||
text_host.setSize(20, 20);
|
||||
text_host.setBackground(color);
|
||||
text_margin.setBackground(display.getSystemColor(SWT.COLOR_WHITE));
|
||||
text_margin.setSize(25, 25);
|
||||
}
|
||||
public static final int Margin_v_dflt = 4;
|
||||
|
@ -35,8 +35,6 @@ public class Xog_tab_mgr implements Gfo_evt_itm {
|
||||
public void Init_by_kit(Gfui_kit kit) {
|
||||
tab_mgr = kit.New_tab_mgr("xowa.tab_mgr", win.Win_box());
|
||||
active_tab = Xog_tab_itm_.Null;
|
||||
tab_mgr.Btns_selected_color_(ColorAdp_.White);
|
||||
tab_mgr.Btns_unselected_color_(ColorAdp_.LightGray);
|
||||
Gfo_evt_mgr_.Sub_same_many(tab_mgr, this, Gfui_tab_mgr.Evt_tab_selected, Gfui_tab_mgr.Evt_tab_closed, Gfui_tab_mgr.Evt_tab_switched);
|
||||
win.App().Cfg().Bind_many_app(this, Cfg__page_load_mode
|
||||
, Cfg__place_on_top, Cfg__height, Cfg__hide_if_one, Cfg__curved, Cfg__close_btn_visible, Cfg__unselected_close_btn_visible, Cfg__max_chars, Cfg__min_chars);
|
||||
|
@ -313,8 +313,7 @@ public class Xog_win_itm implements Gfo_invk, Gfo_evt_itm {
|
||||
win_box.Layout_mgr_(new Swt_layout_mgr__grid().Cols_(1).Margin_w_(0).Margin_h_(0).Spacing_h_(0));
|
||||
|
||||
// toolbar
|
||||
Gfui_grp toolbar_grp = kit.New_grp("toolbar_grp", win_box);
|
||||
toolbar_grp.BackColor_(ColorAdp_.White);
|
||||
Gfui_grp toolbar_grp = Xog_win_itm_.new_grp(app, kit, win_box, "toolbar_grp");
|
||||
go_bwd_btn = Xog_win_itm_.new_btn(app, kit, toolbar_grp, img_dir, "go_bwd_btn", "go_bwd.png" );
|
||||
go_fwd_btn = Xog_win_itm_.new_btn(app, kit, toolbar_grp, img_dir, "go_fwd_btn", "go_fwd.png" );
|
||||
url_box = Xog_win_itm_.new_cbo(app, kit, toolbar_grp, ui_font, "url_box" , true);
|
||||
@ -338,8 +337,7 @@ public class Xog_win_itm implements Gfo_invk, Gfo_evt_itm {
|
||||
tab_mgr.Tab_mgr().Layout_data_(new Swt_layout_data__grid().Grab_excess_h_(true).Align_w__fill_().Align_h__fill_().Grab_excess_w_(true));
|
||||
|
||||
// statusbar
|
||||
this.statusbar_grp = kit.New_grp("statusbar_grp", win_box);
|
||||
statusbar_grp.BackColor_(ColorAdp_.White);
|
||||
this.statusbar_grp = Xog_win_itm_.new_grp(app, kit, win_box, "statusbar_grp");
|
||||
find_close_btn = Xog_win_itm_.new_btn(app, kit, statusbar_grp, img_dir, "find_close_btn", "find_close.png" );
|
||||
find_box = Xog_win_itm_.new_txt(app, kit, statusbar_grp, ui_font, "find_box" , true);
|
||||
find_fwd_btn = Xog_win_itm_.new_btn(app, kit, statusbar_grp, img_dir, "find_fwd_btn", "find_fwd.png" );
|
||||
|
@ -24,24 +24,51 @@ public class Xog_win_itm_ {
|
||||
win_box.Focus_able_(false);
|
||||
win_box.BackColor_(ColorAdp_.White);
|
||||
win.Tab_mgr().Tab_mgr().BackColor_(ColorAdp_.White);
|
||||
win.Tab_mgr().Tab_mgr().Btns_selected_foreground_(ColorAdp_.Black);
|
||||
win.Tab_mgr().Tab_mgr().Btns_selected_background_(ColorAdp_.White);
|
||||
win.Tab_mgr().Tab_mgr().Btns_unselected_foreground_(ColorAdp_.Black);
|
||||
win.Tab_mgr().Tab_mgr().Btns_unselected_background_(ColorAdp_.White);
|
||||
|
||||
// win_box.BackColor_(ColorAdp_.Black);
|
||||
// win.Tab_mgr().Tab_mgr().BackColor_(ColorAdp_.Black);
|
||||
// win.Tab_mgr().Tab_mgr().Btns_selected_foreground_(ColorAdp_.White);
|
||||
// win.Tab_mgr().Tab_mgr().Btns_selected_background_(ColorAdp_.Black);
|
||||
// win.Tab_mgr().Tab_mgr().Btns_unselected_foreground_(ColorAdp_.White);
|
||||
// win.Tab_mgr().Tab_mgr().Btns_unselected_background_(ColorAdp_.Black);
|
||||
|
||||
Xog_startup_win_.Startup(app, win_box);
|
||||
|
||||
win_box.Icon_(IconAdp.file_or_blank(app.Fsys_mgr().Bin_xowa_dir().GenSubFil_nest("file", "app.window", "app_icon.png")));
|
||||
}
|
||||
public static Gfui_grp new_grp(Xoae_app app, Gfui_kit kit, GfuiElem win, String id) {
|
||||
Gfui_grp rv = kit.New_grp(id, win);
|
||||
rv.BackColor_(ColorAdp_.White);
|
||||
// rv.BackColor_(ColorAdp_.Black);
|
||||
return rv;
|
||||
}
|
||||
public static GfuiBtn new_btn(Xoae_app app, Gfui_kit kit, GfuiElem win, Io_url img_dir, String id, String file) {
|
||||
GfuiBtn rv = kit.New_btn(id, win);
|
||||
rv.Btn_img_(kit.New_img_load(img_dir.GenSubFil(file)));
|
||||
rv.ForeColor_(ColorAdp_.Black).BackColor_(ColorAdp_.White);
|
||||
// rv.ForeColor_(ColorAdp_.White).BackColor_(ColorAdp_.Black);
|
||||
return rv;
|
||||
}
|
||||
public static GfuiComboBox new_cbo(Xoae_app app, Gfui_kit kit, GfuiElem win, FontAdp ui_font, String id, boolean border_on) {
|
||||
GfuiComboBox rv = kit.New_combo(id, win, Keyval_.new_(GfuiTextBox.CFG_border_on_, border_on));
|
||||
rv.TextMgr().Font_(ui_font);
|
||||
rv.ForeColor_(ColorAdp_.Black).BackColor_(ColorAdp_.White);
|
||||
rv.Border_color_(ColorAdp_.LightGray);
|
||||
// rv.ForeColor_(ColorAdp_.White).BackColor_(ColorAdp_.Black);
|
||||
// rv.Border_color_(ColorAdp_.Black);
|
||||
return rv;
|
||||
}
|
||||
public static GfuiTextBox new_txt(Xoae_app app, Gfui_kit kit, GfuiElem win, FontAdp ui_font, String id, boolean border_on) {
|
||||
GfuiTextBox rv = kit.New_text_box(id, win, Keyval_.new_(GfuiTextBox.CFG_border_on_, border_on));
|
||||
rv.TextMgr().Font_(ui_font);
|
||||
rv.ForeColor_(ColorAdp_.Black).BackColor_(ColorAdp_.White);
|
||||
rv.Border_color_(border_on ? ColorAdp_.LightGray : rv.BackColor());
|
||||
// rv.ForeColor_(ColorAdp_.White).BackColor_(ColorAdp_.Black);
|
||||
// rv.Border_color_(border_on ? ColorAdp_.Black : rv.BackColor());
|
||||
return rv;
|
||||
}
|
||||
public static void Update_tiptext(Xoae_app app, GfuiElem elem, int tiptext_id) {
|
||||
|
@ -19,10 +19,12 @@ public class Default_tab_page implements Xow_special_page {
|
||||
public void Special__gen(Xow_wiki wiki, Xoa_page pagei, Xoa_url url, Xoa_ttl ttl) {
|
||||
Xoae_page page = (Xoae_page)pagei;
|
||||
page.Db().Text().Text_bry_(Bry_.Empty);
|
||||
page.Html_data().Custom_html_(Bry_.Empty);
|
||||
page.Html_data().Custom_html_(DEFAULT_HTML);
|
||||
page.Html_data().Custom_tab_name_(Tab_name_bry);
|
||||
}
|
||||
public static final byte[] Tab_name_bry = Bry_.new_a7("New Tab");
|
||||
|
||||
public Xow_special_page Special__clone() {return this;}
|
||||
|
||||
private static final byte[] DEFAULT_HTML = Bry_.new_a7("<html><body class='xowa-default_new_tab-body'></body></html>");
|
||||
}
|
||||
|
@ -31,8 +31,10 @@ public class Xow_xwiki_mgr {
|
||||
public Xow_xwiki_itm Get_at(int i) {return (Xow_xwiki_itm)list.Get_at(i);}
|
||||
public Xow_xwiki_itm Get_by_key(byte[] key) {return (Xow_xwiki_itm)hash.Get_by_bry(key);}
|
||||
public Xow_xwiki_itm Get_by_mid(byte[] src, int bgn, int end) {return (Xow_xwiki_itm)hash.Get_by_mid(src, bgn, end);}
|
||||
|
||||
public Xow_xwiki_itm Add_by_atrs_offline(String key, String domain) {
|
||||
return Add_by_atrs(Bry_.new_a7(key), Bry_.new_a7(domain), null).Offline_(true);
|
||||
return Add_by_atrs(Bry_.new_a7(key), Bry_.new_a7(domain), null)
|
||||
.Offline_(true);// NOTE: need to mark offline in order to show in left sidebar
|
||||
}
|
||||
public Xow_xwiki_itm Add_by_atrs(String key, String domain) {return Add_by_atrs(Bry_.new_a7(key), Bry_.new_a7(domain), null);}
|
||||
public Xow_xwiki_itm Add_by_atrs(byte[] key, byte[] domain) {return Add_by_atrs(key, domain, null);}
|
||||
|
Loading…
Reference in New Issue
Block a user