1
0
mirror of https://github.com/gnosygnu/xowa.git synced 2024-09-28 14:30:51 +00:00

Gui: Add initial support for night-mode

This commit is contained in:
gnosygnu 2017-03-03 16:20:00 -05:00
parent 3e69a06434
commit a28ba26ca6
27 changed files with 148 additions and 49 deletions

View File

@ -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);

View File

@ -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) {}

View File

@ -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) {}

View File

@ -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) {

View File

@ -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();

View File

@ -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;}

View File

@ -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) {

View File

@ -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);

View File

@ -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);}

View File

@ -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() {

View File

@ -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());

View File

@ -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) {}

View File

@ -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());

View File

@ -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));
}
}

View File

@ -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;}

View File

@ -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();

View File

@ -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];

View File

@ -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();}

View File

@ -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) {}

View File

@ -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);

View File

@ -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) {}
}

View File

@ -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;

View File

@ -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);

View File

@ -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" );

View File

@ -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) {

View File

@ -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>");
}

View File

@ -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);}