Skip to content

Commit

Permalink
Running hooks for preview and edit
Browse files Browse the repository at this point in the history
  • Loading branch information
Michael Pozhidaev committed Feb 6, 2019
1 parent 50ffaf1 commit 8946c5f
Show file tree
Hide file tree
Showing 3 changed files with 55 additions and 57 deletions.
33 changes: 1 addition & 32 deletions src/main/java/org/luwrain/app/commander/Actions.java
Original file line number Diff line number Diff line change
Expand Up @@ -190,37 +190,6 @@ boolean showVolumeInfo(InfoAndProperties infoAndProps, PanelArea area, SimpleAre
return true;
}

boolean onOpenFilesWithApp(String appName, FileObject[] paths, boolean asUrls)
{
NullCheck.notEmpty(appName, "appName");
NullCheck.notNullItems(paths, "paths");
/*
boolean atLeastOne = false;
for(Path p: paths)
if (!Files.isDirectory(p))
{
atLeastOne = true;
String arg;
if (asUrls)
{
try {
arg = p.toUri().toURL().toString();
}
catch(java.net.MalformedURLException e)
{
e.printStackTrace();
arg = p.toString();
}
} else
arg = p.toString();
luwrain.launchApp(appName, new String[]{arg});
}
return atLeastOne;
*/
return false;
}


boolean onOpenFtp(PanelArea area)
{
NullCheck.notNull(area, "area");
Expand All @@ -234,7 +203,7 @@ boolean onOpenFtp(PanelArea area)
boolean onCopyUrls(PanelArea panelArea)
{
NullCheck.notNull(panelArea, "panelArea");
final Object[] objs = panelArea.getObjectsToProcess();
final Object[] objs = panelArea.getNativeObjectsToProcess();
final List<URL> res = new LinkedList<URL>();
Log.debug("proba", "" + objs.length);
for(Object o: objs)
Expand Down
38 changes: 19 additions & 19 deletions src/main/java/org/luwrain/app/commander/App.java
Original file line number Diff line number Diff line change
Expand Up @@ -93,12 +93,12 @@ private void createAreas(String startFrom) throws Exception
{
NullCheck.notEmpty(startFrom, "startFrom");

final PanelArea.Params leftPanelParams = PanelArea.createParams(new DefaultControlEnvironment(luwrain));
final PanelArea.Params leftPanelParams = PanelArea.createParams(luwrain);
leftPanelParams.clickHandler = (area, obj, dir)->actions.onClick(area, obj, dir);
final PanelArea.Params rightPanelParams = PanelArea.createParams(new DefaultControlEnvironment(luwrain));
final PanelArea.Params rightPanelParams = PanelArea.createParams(luwrain);
rightPanelParams.clickHandler = (area, obj, dir)->actions.onClick(area, obj, dir);

leftPanel = new PanelArea(leftPanelParams, actionList) {
leftPanel = new PanelArea(leftPanelParams, luwrain, actionList) {
@Override public boolean onInputEvent(KeyboardEvent event)
{
NullCheck.notNull(event, "event");
Expand All @@ -117,7 +117,7 @@ private void createAreas(String startFrom) throws Exception
}
};

rightPanel = new PanelArea(rightPanelParams, actionList) {
rightPanel = new PanelArea(rightPanelParams, luwrain, actionList) {
@Override public boolean onInputEvent(KeyboardEvent event)
{
NullCheck.notNull(event, "event");
Expand Down Expand Up @@ -219,24 +219,24 @@ private boolean onInputEventInPanel(Side side, KeyboardEvent event)
return false;
}

private boolean onSystemEventInPanel(EnvironmentEvent event, PanelArea area, Side side)
private boolean onSystemEventInPanel(EnvironmentEvent event, PanelArea panel, Side side)
{
NullCheck.notNull(event, "event");
NullCheck.notNull(area, "area");
NullCheck.notNull(panel, "panel");
NullCheck.notNull(side, "side");
switch(event.getCode())
{
case OPEN:
return actions.onOpenEvent(event, area);
return actions.onOpenEvent(event, panel);
case INTRODUCE:
luwrain.playSound(Sounds.INTRO_REGULAR);
switch(side)
{
case LEFT:
luwrain.say(strings.leftPanelName() + " " + area.getAreaName());
luwrain.say(strings.leftPanelName() + " " + panel.getAreaName());
break;
case RIGHT:
luwrain.say(strings.rightPanelName() + " " + area.getAreaName());
luwrain.say(strings.rightPanelName() + " " + panel.getAreaName());
break;
}
return true;
Expand All @@ -246,22 +246,22 @@ private boolean onSystemEventInPanel(EnvironmentEvent event, PanelArea area, Sid
case ACTION:
{
if (ActionEvent.isAction(event, "edit-text"))
return actions.onOpenFilesWithApp("notepad", area.getFileObjectsToProcess(), false);
return panel.runHookOnSelected("luwrain.app.commander.edit");
if (ActionEvent.isAction(event, "size"))
return infoAndProps.calcSize(area.getFileObjectsToProcess());
return infoAndProps.calcSize(panel.getFileObjectsToProcess());
if (ActionEvent.isAction(event, "copy-url"))
return actions.onCopyUrls(area);
return actions.onCopyUrls(panel);
if (ActionEvent.isAction(event, "preview"))
return actions.onOpenFilesWithApp("reader", area.getFileObjectsToProcess(), true);
return panel.runHookOnSelected("luwrain.app.commander.preview");
if (ActionEvent.isAction(event, "hidden-show"))
{
area.showHidden();
panel.showHidden();
luwrain.message("Скрытые файлы показаны");
return true;
}
if (ActionEvent.isAction(event, "hidden-hide"))
{
area.hideHidden();
panel.hideHidden();
luwrain.message("Скрытые файлы убраны");
return true;
}
Expand All @@ -286,15 +286,15 @@ private boolean onSystemEventInPanel(EnvironmentEvent event, PanelArea area, Sid
if (ActionEvent.isAction(event, "mkdir"))
return actions.mkdir(this, getPanel(side));
if (ActionEvent.isAction(event, "delete"))
return actions.onLocalDelete(area);
return actions.onLocalDelete(panel);
if (ActionEvent.isAction(event, "open-ftp"))
return actions.onOpenFtp(area);
return actions.onOpenFtp(panel);
if (ActionEvent.isAction(event, "volume-info"))
return showVolumeInfo(area);
return showVolumeInfo(panel);
return false;
}
case PROPERTIES:
return showPropertiesArea(area);
return showPropertiesArea(panel);
default:
return false;
}
Expand Down
41 changes: 35 additions & 6 deletions src/main/java/org/luwrain/app/commander/PanelArea.java
Original file line number Diff line number Diff line change
Expand Up @@ -29,12 +29,15 @@

class PanelArea extends CommanderArea<FileObject>
{
private final Luwrain luwrain;
private final ActionList actionList;

PanelArea(Params<FileObject> params, ActionList actionList)
PanelArea(Params<FileObject> params, Luwrain luwrain, ActionList actionList)
{
super(params);
NullCheck.notNull(luwrain, "luwrain");
NullCheck.notNull(actionList, "actionList");
this.luwrain = luwrain;
this.actionList = actionList;
}

Expand All @@ -53,6 +56,32 @@ class PanelArea extends CommanderArea<FileObject>
return super.onAreaQuery(query);
}

boolean runHookOnSelected(String hookPrefix)
{
NullCheck.notEmpty(hookPrefix, "hookPrefix");
final FileObject obj = getSelectedEntry();
if (obj == null)
return false;
if (isLocalDir())
{
if (!(obj instanceof org.apache.commons.vfs2.provider.local.LocalFile))
throw new RuntimeException("The entry is not a local file while the local dir is opened");
final File f = new File(obj.getName().getPath());
try {
if (luwrain.xRunHooks(hookPrefix + ".local.custom", new Object[]{f}, Luwrain.HookStrategy.CHAIN_OF_RESPONSIBILITY))
return true;
return luwrain.xRunHooks(hookPrefix + ".local.default", new Object[]{f}, Luwrain.HookStrategy.CHAIN_OF_RESPONSIBILITY);
}
catch(RuntimeException e)
{
luwrain.message(luwrain.i18n().getExceptionDescr(e), Luwrain.MessageType.ERROR);
return true;
}
}
//FIXME:remote
return false;
}

boolean isLocalDir()
{
final FileObject o = opened();
Expand All @@ -63,7 +92,7 @@ boolean isLocalDir()

FileObject[] getFileObjectsToProcess()
{
final List<FileObject> res = new LinkedList<FileObject>();
final List<FileObject> res = new LinkedList();
for(Object o: getMarked())
res.add((FileObject)o);
if (!res.isEmpty())
Expand All @@ -72,7 +101,7 @@ FileObject[] getFileObjectsToProcess()
return entry != null?new FileObject[]{entry}:new FileObject[0];
}

Object[] getObjectsToProcess()
Object[] getNativeObjectsToProcess()
{
final FileObject[] objs = getFileObjectsToProcess();
final List res = new LinkedList();
Expand Down Expand Up @@ -164,10 +193,10 @@ void hideHidden()
return actionList.getPanelAreaActions(this);
}

static Params<FileObject> createParams(ControlEnvironment environment) throws FileSystemException
static Params<FileObject> createParams(Luwrain luwrain) throws FileSystemException
{
NullCheck.notNull(environment, "environment");
Params<FileObject> params = CommanderUtilsVfs.createParams(environment);
NullCheck.notNull(luwrain, "luwrain");
Params<FileObject> params = CommanderUtilsVfs.createParams(new DefaultControlEnvironment(luwrain));
params.flags = EnumSet.of(Flags.MARKING);
params.filter = new CommanderUtilsVfs.NoHiddenFilter();
params.clipboardSaver = (area,model,appearance,fromIndex,toIndex,clipboard)->{
Expand Down

0 comments on commit 8946c5f

Please sign in to comment.