mirror of
https://github.com/gnosygnu/xowa.git
synced 2026-03-02 03:49:30 +00:00
72 lines
3.1 KiB
Java
72 lines
3.1 KiB
Java
|
|
/*
|
||
|
|
XOWA: the XOWA Offline Wiki Application
|
||
|
|
Copyright (C) 2012 gnosygnu@gmail.com
|
||
|
|
|
||
|
|
This program is free software: you can redistribute it and/or modify
|
||
|
|
it under the terms of the GNU Affero General Public License as
|
||
|
|
published by the Free Software Foundation, either version 3 of the
|
||
|
|
License, or (at your option) any later version.
|
||
|
|
|
||
|
|
This program is distributed in the hope that it will be useful,
|
||
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
|
|
GNU Affero General Public License for more details.
|
||
|
|
|
||
|
|
You should have received a copy of the GNU Affero General Public License
|
||
|
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||
|
|
*/
|
||
|
|
package gplx.gfui.controls.customs; import gplx.*; import gplx.gfui.*; import gplx.gfui.controls.*;
|
||
|
|
import gplx.gfui.layouts.*; import gplx.gfui.controls.elems.*; import gplx.gfui.controls.standards.*;
|
||
|
|
public abstract class GfuiIoUrlSelectBox extends GfuiElemBase {
|
||
|
|
@Override public void ctor_GfuiBox_base(Keyval_hash ctorArgs) {
|
||
|
|
super.ctor_GfuiBox_base(ctorArgs);
|
||
|
|
label = GfuiLbl_.sub_("label", this);
|
||
|
|
pathBox.Owner_(this, "pathBox");
|
||
|
|
GfuiBtn_.invk_("selectPath", this, this, SelectAction_cmd).Text_("...");
|
||
|
|
|
||
|
|
this.Lyt_activate();
|
||
|
|
this.Lyt().Bands_add(GftBand.new_().Cell_abs_(60).Cell_pct_(100).Cell_abs_(30));
|
||
|
|
}
|
||
|
|
public static final String PathSelected_evt = "PathSelected_evt";
|
||
|
|
public GfuiLbl Label() {return label;} GfuiLbl label;
|
||
|
|
public Io_url Url() {return Io_url_.new_any_(pathBox.TextMgr().Val());}
|
||
|
|
public Io_url StartingFolder() {return startingFolder;}
|
||
|
|
public void StartingFolder_set(Io_url v) {this.startingFolder = v;} Io_url startingFolder = Io_url_.Empty;
|
||
|
|
@Override public void Focus() {pathBox.Focus();}
|
||
|
|
|
||
|
|
void SelectAction() {
|
||
|
|
Io_url selectedPath = SelectAction_hook(this.startingFolder);
|
||
|
|
if (selectedPath.EqNull()) return;
|
||
|
|
pathBox.Text_(selectedPath.Raw());
|
||
|
|
Gfo_evt_mgr_.Pub(this, PathSelected_evt);
|
||
|
|
}
|
||
|
|
protected abstract Io_url SelectAction_hook(Io_url startingFolder);
|
||
|
|
@Override public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {
|
||
|
|
if (ctx.Match(k, SelectAction_cmd)) SelectAction();
|
||
|
|
else return super.Invk(ctx, ikey, k, m);
|
||
|
|
return this;
|
||
|
|
} public static final String SelectAction_cmd = "SelectAction";
|
||
|
|
|
||
|
|
GfuiComboBox pathBox = GfuiComboBox.new_();
|
||
|
|
}
|
||
|
|
class IoFileSelector extends GfuiIoUrlSelectBox { @Override protected Io_url SelectAction_hook(Io_url startingFolder) {
|
||
|
|
return GfuiIoDialogUtl.SelectFile(startingFolder);
|
||
|
|
}
|
||
|
|
public static IoFileSelector new_() {
|
||
|
|
IoFileSelector rv = new IoFileSelector();
|
||
|
|
rv.ctor_GfuiBox_base(GfuiElem_.init_focusAble_false_());
|
||
|
|
return rv;
|
||
|
|
} IoFileSelector() {}
|
||
|
|
}
|
||
|
|
class IoFolderSelector extends GfuiIoUrlSelectBox { @Override protected Io_url SelectAction_hook(Io_url startingFolder) {
|
||
|
|
Io_url url = GfuiIoDialogUtl.SelectDir(startingFolder);
|
||
|
|
this.StartingFolder_set(url);
|
||
|
|
return url;
|
||
|
|
}
|
||
|
|
public static IoFolderSelector new_() {
|
||
|
|
IoFolderSelector rv = new IoFolderSelector();
|
||
|
|
rv.ctor_GfuiBox_base(GfuiElem_.init_focusAble_false_());
|
||
|
|
return rv;
|
||
|
|
} IoFolderSelector() {}
|
||
|
|
}
|