Skip to content

Commit

Permalink
Using Layoutbase.getAreaLayouts()
Browse files Browse the repository at this point in the history
  • Loading branch information
marigostra committed Apr 12, 2021
1 parent 0c79418 commit abf1a65
Show file tree
Hide file tree
Showing 3 changed files with 50 additions and 94 deletions.
4 changes: 2 additions & 2 deletions src/main/java/org/luwrain/app/commander/App.java
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,7 @@ OperationListener createOperationListener()

@Override public AreaLayout getDefaultAreaLayout()
{
return mainLayout.getLayout();
return mainLayout.getAreaLayout();
}

@Override public void closeApp()
Expand Down Expand Up @@ -169,7 +169,7 @@ Layouts layouts()
return new Layouts(){
@Override public void main()
{
getLayout().setBasicLayout(mainLayout.getLayout());
setAreaLayout(mainLayout);
getLuwrain().announceActiveArea();
}
@Override public void operations()
Expand Down
78 changes: 14 additions & 64 deletions src/main/java/org/luwrain/app/commander/MainLayout.java
Original file line number Diff line number Diff line change
Expand Up @@ -42,17 +42,15 @@ final class MainLayout extends LayoutBase

MainLayout(App app)
{
super(app);
NullCheck.notNull(app, "app");
this.app = app;
this.fileActions = new FileActions(app);
this.leftPanel = new PanelArea(createPanelParams(), app.getLuwrain()) {
@Override public boolean onInputEvent(InputEvent event)
{
NullCheck.notNull(event, "event");
if (app.onInputEvent(this, event))
return true;
return super.onInputEvent(event);
}

final CommanderArea.Params params = PanelArea.createParams(getControlContext());
params.clickHandler = this::onClick;

this.leftPanel = new PanelArea(params, getLuwrain()) {
@Override public boolean onSystemEvent(SystemEvent event)
{
NullCheck.notNull(event, "event");
Expand All @@ -67,30 +65,11 @@ final class MainLayout extends LayoutBase
case PROPERTIES:
return showFilesInfo(this);
}
if (app.onSystemEvent(this, event, getPanelActions(Side.LEFT)))
return true;
return super.onSystemEvent(event);
}
@Override public boolean onAreaQuery(AreaQuery query)
{
NullCheck.notNull(query, "query");
if (app.onAreaQuery(this, query))
return true;
return super.onAreaQuery(query);
}
@Override public Action[] getAreaActions()
{
return getPanelActions(Side.LEFT).getAreaActions();
}
};
this.rightPanel = new PanelArea(createPanelParams(), app.getLuwrain()) {
@Override public boolean onInputEvent(InputEvent event)
{
NullCheck.notNull(event, "event");
if (app.onInputEvent(this, event))
return true;
return super.onInputEvent(event);
}

this.rightPanel = new PanelArea(params, getLuwrain()) {
@Override public boolean onSystemEvent(SystemEvent event)
{
NullCheck.notNull(event, "event");
Expand All @@ -102,31 +81,22 @@ final class MainLayout extends LayoutBase
return true;
case INTRODUCE:
return announcePanel(Side.RIGHT);
case PROPERTIES:
case PROPERTIES:
return showFilesInfo(this);
}
if (app.onSystemEvent(this, event, getPanelActions(Side.RIGHT)))
return true;
return super.onSystemEvent(event);
}
@Override public boolean onAreaQuery(AreaQuery query)
{
NullCheck.notNull(query, "query");
if (app.onAreaQuery(this, query))
return true;
return super.onAreaQuery(query);
}
@Override public Action[] getAreaActions()
{
return getPanelActions(Side.RIGHT).getAreaActions();
}
};

leftPanel.setLoadingResultHandler((location, data, selectedIndex, announce)->{
app.getLuwrain().runUiSafely(()->leftPanel.acceptNewLocation(location, data, selectedIndex, announce));
});
rightPanel.setLoadingResultHandler((location, data, selectedIndex, announce)->{
app.getLuwrain().runUiSafely(()->rightPanel.acceptNewLocation(location, data, selectedIndex, announce));
});

setAreaLayout(AreaLayout.LEFT_RIGHT, leftPanel, getPanelActions(Side.LEFT), rightPanel, getPanelActions(Side.RIGHT));

if (app.startFrom != null)
{
leftPanel.openInitial(app.startFrom);
Expand Down Expand Up @@ -202,7 +172,6 @@ private PanelArea.ClickHandler.Result onClick(CommanderArea area, Object obj, bo
}
}


private boolean actLocalMkdir(PanelArea panelArea)
{
NullCheck.notNull(panelArea, "panelArea");
Expand Down Expand Up @@ -254,7 +223,7 @@ private boolean showFilesInfo(PanelArea panelArea)
{
NullCheck.notNull(panelArea, "panelArea");

final FilesInfoLayout info = new FilesInfoLayout(app, new File[0], ()->app.layout(getLayout(), panelArea));
final FilesInfoLayout info = new FilesInfoLayout(app, new File[0], ()->app.layout(getAreaLayout(), panelArea));
app.layout(info.getLayout());
return true;

Expand Down Expand Up @@ -339,23 +308,4 @@ boolean onCopyUrls(PanelArea panelArea)
*/
return true;
}

private CommanderArea.Params createPanelParams()
{
try {
final CommanderArea.Params params = PanelArea.createParams(app.getLuwrain());
params.clickHandler = this::onClick;
return params;
}
catch(Exception e)
{
throw new RuntimeException(e);
}
}

AreaLayout getLayout()
{
return new AreaLayout(AreaLayout.LEFT_RIGHT, leftPanel, rightPanel);
}

}
62 changes: 34 additions & 28 deletions src/main/java/org/luwrain/app/commander/PanelArea.java
Original file line number Diff line number Diff line change
Expand Up @@ -246,34 +246,40 @@ static File[] asFile(FileObject[] fileObjects)
return res.toArray(new File[res.size()]);
}

static Params<FileObject> createParams(Luwrain luwrain) throws org.apache.commons.vfs2.FileSystemException
static Params<FileObject> createParams(ControlContext controlContext)
{
NullCheck.notNull(luwrain, "luwrain");
Params<FileObject> params = CommanderUtilsVfs.createParams(new DefaultControlContext(luwrain));
params.flags = EnumSet.of(Flags.MARKING);
params.filter = new CommanderUtilsVfs.NoHiddenFilter();
params.clipboardSaver = (area,model,appearance,fromIndex,toIndex,clipboard)->{
NullCheck.notNull(model, "model");
NullCheck.notNull(clipboard, "clipboard");
if (fromIndex < 0 || toIndex < 0)
throw new IllegalArgumentException("fromIndex and toIndex may not be negative");
final int count = model.getItemCount();
if (fromIndex >= toIndex || fromIndex >= count || toIndex > count)
return false;
final List<String> names = new ArrayList();
final List<Serializable> res = new ArrayList();
for(int i = fromIndex;i < toIndex;++i)
{
final CommanderArea.NativeItem<FileObject> nativeObj = (CommanderArea.NativeItem<FileObject>)model.getItem(i);
final FileObject fileObj = nativeObj.getNativeObj();
names.add(nativeObj.getBaseName());
final File file = asFile(fileObj);
if (file != null)
res.add(file); else
res.add(fileObj.getName().getBaseName());
}
return clipboard.set(res.toArray(new Object[res.size()]), names.toArray(new String[names.size()]));
};
return params;
NullCheck.notNull(controlContext, "controlContext");
try {
Params<FileObject> params = CommanderUtilsVfs.createParams(controlContext);
params.flags = EnumSet.of(Flags.MARKING);
params.filter = new CommanderUtilsVfs.NoHiddenFilter();
params.clipboardSaver = (area,model,appearance,fromIndex,toIndex,clipboard)->{
NullCheck.notNull(model, "model");
NullCheck.notNull(clipboard, "clipboard");
if (fromIndex < 0 || toIndex < 0)
throw new IllegalArgumentException("fromIndex and toIndex may not be negative");
final int count = model.getItemCount();
if (fromIndex >= toIndex || fromIndex >= count || toIndex > count)
return false;
final List<String> names = new ArrayList();
final List<Serializable> res = new ArrayList();
for(int i = fromIndex;i < toIndex;++i)
{
final CommanderArea.NativeItem<FileObject> nativeObj = (CommanderArea.NativeItem<FileObject>)model.getItem(i);
final FileObject fileObj = nativeObj.getNativeObj();
names.add(nativeObj.getBaseName());
final File file = asFile(fileObj);
if (file != null)
res.add(file); else
res.add(fileObj.getName().getBaseName());
}
return clipboard.set(res.toArray(new Object[res.size()]), names.toArray(new String[names.size()]));
};
return params;
}
catch(org.apache.commons.vfs2.FileSystemException e)
{
throw new RuntimeException(e);
}
}
}

0 comments on commit abf1a65

Please sign in to comment.