Skip to content

Commit

Permalink
New ListArea interface
Browse files Browse the repository at this point in the history
  • Loading branch information
marigostra committed Oct 17, 2021
1 parent bd18be5 commit f605e5a
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 43 deletions.
8 changes: 0 additions & 8 deletions src/main/java/org/luwrain/app/commander/MainLayout.java
Original file line number Diff line number Diff line change
Expand Up @@ -88,14 +88,6 @@ final class MainLayout extends LayoutBase
return super.onSystemEvent(event);
}
};

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)
Expand Down
33 changes: 9 additions & 24 deletions src/main/java/org/luwrain/app/commander/OperationsAppearance.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,11 @@
import org.luwrain.controls.*;
import org.luwrain.app.commander.fileops.*;

class OperationsAppearance implements ListArea.Appearance
import static org.luwrain.core.DefaultEventResponse.*;

class OperationsAppearance extends ListUtils.AbstractAppearance<Operation>
{
private final App app;
private final App app;
private final Luwrain luwrain;
private final Strings strings;

Expand All @@ -36,42 +38,25 @@ class OperationsAppearance implements ListArea.Appearance
this.app = app;
}

@Override public void announceItem(Object item, Set<Flags> flags)
@Override public void announceItem(Operation op, Set<Flags> flags)
{
NullCheck.notNull(item, "item");
NullCheck.notNull(op, "op");
NullCheck.notNull(flags, "flags");
if (!(item instanceof Operation))
return;
final Operation op = (Operation)item;
final Sounds sound;

if (op.isDone())
{
if (op.getException() == null)
sound = Sounds.SELECTED; else
sound = Sounds.ATTENTION;
} else
sound = Sounds.LIST_ITEM;
luwrain.setEventResponse(DefaultEventResponse.listItem(sound, op.name, null));
luwrain.setEventResponse(listItem(sound, op.name, null));
}

@Override public String getScreenAppearance(Object item, Set<Flags> flags)
@Override public String getScreenAppearance(Operation op, Set<Flags> flags)
{
NullCheck.notNull(item, "item");
NullCheck.notNull(op, "op");
NullCheck.notNull(flags, "flags");
if (!(item instanceof Operation))
return item.toString();
final Operation op = (Operation)item;
return op.name;
}

@Override public int getObservableLeftBound(Object item)
{
return 0;
}

@Override public int getObservableRightBound(Object item)
{
return getScreenAppearance(item, EnumSet.noneOf(Flags.class)).length();
}
}
17 changes: 6 additions & 11 deletions src/main/java/org/luwrain/app/commander/OperationsLayout.java
Original file line number Diff line number Diff line change
Expand Up @@ -25,38 +25,33 @@
import org.luwrain.app.commander.App.Side;
import org.luwrain.app.commander.fileops.*;

final class OperationsLayout extends LayoutBase implements ListArea.ClickHandler
final class OperationsLayout extends LayoutBase implements ListArea.ClickHandler<Operation>
{
private final App app;
final ListArea operationsArea;
final ListArea<Operation> operationsArea;

OperationsLayout(App app)
{
super(app);
this.app = app;
setCloseHandler(()->{ app.layouts().main(); return true; });
{
final ListArea.Params params = new ListArea.Params();
params.context = getControlContext();
this.operationsArea = new ListArea<Operation>(listParams((params)->{
params.name = app.getStrings().operationsAreaName();
params.clickHandler = this;
params.model = new ListUtils.ListModel(app.operations);
params.model = new ListUtils.ListModel<>(app.operations);
params.appearance = new OperationsAppearance(app);
this.operationsArea = new ListArea(params) {
})) {
@Override protected String noContentStr()
{
return "Файловые операции отсутствуют";//FIXME:
}
};
}
final Actions operationsActions = actions();
setAreaLayout(operationsArea, operationsActions);
}

@Override public boolean onListClick(ListArea area, int index, Object item)
@Override public boolean onListClick(ListArea area, int index, Operation op)
{
if (!app.operations.get(index).isDone())
return false;
app.operations.remove(index);
operationsArea.refresh();
app.getLuwrain().playSound(Sounds.OK);
Expand Down

0 comments on commit f605e5a

Please sign in to comment.