Tony CHEMIT pushed to branch feature/refactor_ui at ultreiaio / ird-observe Commits: 458a9a10 by Tony CHEMIT at 2017-10-12T18:35:47+02:00 stop before trying to move TripMap to toolkit project - - - - - 13 changed files: - client/src/main/java/fr/ird/observe/client/form/ObserveFormUIHandler.java - client/src/main/java/fr/ird/observe/client/form/open/ObserveOpenDataFormUIHandler.java - client/src/main/java/fr/ird/observe/client/form/open/ObserveOpenDataFormUIModel.java - client/src/main/java/fr/ird/observe/client/form/open/seine/ActivitySeineUIHandler.java - client/src/main/java/fr/ird/observe/client/form/openlist/ObserveOpenDataListFormUIHandler.java - client/src/main/java/fr/ird/observe/client/form/openlist/longline/TripLonglineListUIHandler.java - client/src/main/java/fr/ird/observe/client/form/openlist/seine/TripSeineListUIHandler.java - client/src/main/java/fr/ird/observe/client/form/referential/ObserveReferentialFormUIHandler.java - client/src/main/java/fr/ird/observe/client/form/referential/ObserveReferentialFormUIModel.java - client/src/main/java/fr/ird/observe/client/form/simple/ObserveMainDataFormUIHandler.java - client/src/main/java/fr/ird/observe/client/form/simple/ObserveSimpleDataFormUIHandler.java - client/src/main/java/fr/ird/observe/client/form/simplelist/ObserveSimpleDataListFormUIHandler.java - client/src/main/java/fr/ird/observe/client/form/table/ObserveDataTableFormUIHandler.java Changes: ===================================== client/src/main/java/fr/ird/observe/client/form/ObserveFormUIHandler.java ===================================== --- a/client/src/main/java/fr/ird/observe/client/form/ObserveFormUIHandler.java +++ b/client/src/main/java/fr/ird/observe/client/form/ObserveFormUIHandler.java @@ -26,14 +26,14 @@ import com.google.common.collect.ImmutableMap; import fr.ird.observe.client.ObserveClientApplicationContext; import fr.ird.observe.client.ObserveMainUI; import fr.ird.observe.client.db.ObserveSwingDataSource; -import fr.ird.observe.client.form.referential.ReferentialFormUIHandler; +import fr.ird.observe.client.form.action.FormUIAction; +import fr.ird.observe.client.form.action.FormUIActionHandler; import fr.ird.observe.client.form.spi.FormUIToModelClassMapping; import fr.ird.observe.client.form.spi.FormUIValidationMessageManager; import fr.ird.observe.client.form.spi.ReferentialReferencesFilter; import fr.ird.observe.client.spi.ClientDataContext; import fr.ird.observe.client.tools.ObserveOpenDataManager; import fr.ird.observe.client.tree.navigation.NavigationTree; -import fr.ird.observe.client.tree.navigation.nodes.NavigationTreeNodeSupport; import fr.ird.observe.client.util.UIHelper; import fr.ird.observe.dto.IdDto; import fr.ird.observe.dto.decoration.DecoratorService; @@ -85,7 +85,7 @@ public abstract class ObserveFormUIHandler<M extends FormUIModel, U extends Form protected final ObserveSwingDataSource dataSource; protected final ObserveOpenDataManager openDataManager; protected final DecoratorService decoratorService; - + private final FormUIAction formUIAction; protected U ui; protected String prefix; private boolean init; @@ -100,6 +100,11 @@ public abstract class ObserveFormUIHandler<M extends FormUIModel, U extends Form openDataManager = applicationContext.getOpenDataManager(); decoratorService = applicationContext.getDecoratorService(); dataContext = applicationContext.getDataContext(); + formUIAction = new FormUIAction(); + } + + protected final void run(FormUIActionHandler handler) { + formUIAction.run(handler); } protected static DecoratorTableCellRenderer newDecorateTableCellRenderer(TableCellRenderer renderer, Class<?> type) { @@ -259,6 +264,10 @@ public abstract class ObserveFormUIHandler<M extends FormUIModel, U extends Form ui.setContextValue(model = FormUIToModelClassMapping.newModel(ui)); ui.setContextValue(ObserveClientApplicationContext.get().getDataContext()); ui.setContextValue(ObserveClientApplicationContext.get().getConfig()); + if (model instanceof WithBeanTypeFormModel) { + validationManager = new FormUIValidationMessageManager(((WithBeanTypeFormModel) model).getBeanType(), ui); + } + prefix = model.getPrefix(); } @SuppressWarnings("unchecked") @@ -270,7 +279,6 @@ public abstract class ObserveFormUIHandler<M extends FormUIModel, U extends Form init = true; mainUI = (ObserveMainUI) ui.getMainUI(); navigation = mainUI.getNavigation(); - prefix = model.getPrefix(); initialize(ui); installFocusTraversalPolicy(); @@ -288,9 +296,7 @@ public abstract class ObserveFormUIHandler<M extends FormUIModel, U extends Form } protected final void initialize(U ui) { - ImmutableMap<String, ReferentialReferencesFilter> filters = createFilters(); - ObserveFormUIInitializerContext<U> initializerContext = createInitializerContext(ui, filters); - initialize(initializerContext); + initialize(createInitializerContext(ui, createFilters())); } protected void initialize(ObserveFormUIInitializerContext<U> initializerContext) { @@ -302,8 +308,11 @@ public abstract class ObserveFormUIHandler<M extends FormUIModel, U extends Form // ObserveClientApplicationContext.get().getFocusManager().installFocusTraversalPolicy(ui); } + protected void updateExtra() { + } + @Override - public U getUi() { + public final U getUi() { return ui; } @@ -326,49 +335,6 @@ public abstract class ObserveFormUIHandler<M extends FormUIModel, U extends Form } } - // protected void setContentMode() { -// FormUIMode contentMode = model.isCanWrite() ? computeContentMode(dataContext, openDataManager) : FormUIMode.READ; -// log.info(String.format("%s content mode %s", prefix, contentMode)); -// model.setMode(contentMode); -// } -// -// protected void setCanWrite() { -// boolean canWrite = model.isReferential() ? dataSource.canWriteReferential() : dataSource.canWriteData(); -// log.info(String.format("%s can write %s", prefix, canWrite)); -// model.setCanWrite(canWrite); -// } -// - protected void computeContentIcon() { - NavigationTreeNodeSupport node = navigation.getSelectedNode(); - if (ReferentialFormUIHandler.class.isAssignableFrom(getClass())) { - node = node.getParent(); - } - model.setContentIcon(node.getIcon("")); - } -// -// protected void computeValidationMessages() { -// validationManager.clear(); -// if (model.isCanWrite()) { -// switch (model.getMode()) { -// case CREATE: -// computeCreateMessages(dataContext, validationManager); -// break; -// case UPDATE: -// computeUpdateMessages(dataContext, validationManager); -// break; -// case READ: -// computeReadMessages(dataContext, validationManager); -// break; -// } -// } else { -// if (model.isReferential()) { -// validationManager.addInfoMessage(t("observe.common.ReferentialDto.message.noEditable")); -// } else { -// validationManager.addInfoMessage(t("observe.common.Dto.message.cantWriteData")); -// } -// } -// } - protected void grabFocusOnForm() { boolean focusOnNavigation = mainUI.getModel().isFocusOnNavigation(); if (focusOnNavigation) { ===================================== client/src/main/java/fr/ird/observe/client/form/open/ObserveOpenDataFormUIHandler.java ===================================== --- a/client/src/main/java/fr/ird/observe/client/form/open/ObserveOpenDataFormUIHandler.java +++ b/client/src/main/java/fr/ird/observe/client/form/open/ObserveOpenDataFormUIHandler.java @@ -23,23 +23,20 @@ package fr.ird.observe.client.form.open; */ import com.google.common.collect.ImmutableMap; +import fr.ird.observe.client.form.FormUI; import fr.ird.observe.client.form.FormUIMode; import fr.ird.observe.client.form.ObserveFormUIHandler; import fr.ird.observe.client.form.ObserveFormUIInitializerContext; -import fr.ird.observe.client.form.action.DeleteFormUIAction; -import fr.ird.observe.client.form.action.EditFormUIAction; -import fr.ird.observe.client.form.action.OpenCloseDataFormUIAction; -import fr.ird.observe.client.form.spi.FormUIValidationMessageManager; +import fr.ird.observe.client.form.action.FormUIActionHandler; import fr.ird.observe.client.form.spi.ReferentialReferencesFilter; -import fr.ird.observe.client.tree.navigation.NavigationTree; import fr.ird.observe.client.tree.navigation.nodes.NavigationTreeNodeSupport; import fr.ird.observe.client.tree.navigation.nodes.longline.TripLonglineListNavigationTreeNode; import fr.ird.observe.client.tree.navigation.nodes.seine.TripSeineListNavigationTreeNode; -import fr.ird.observe.client.util.UIHelper; import fr.ird.observe.dto.data.OpenableDto; import fr.ird.observe.dto.reference.DataDtoReference; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.nuiton.jaxx.runtime.swing.SwingUtil; import org.nuiton.jaxx.validator.swing.SwingValidatorUtil; /** @@ -52,67 +49,117 @@ public abstract class ObserveOpenDataFormUIHandler<D extends OpenableDto, R exte /** Logger. */ private static final Log log = LogFactory.getLog(ObserveOpenDataFormUIHandler.class); - private final DeleteFormUIAction<D, U> deleteAction; - private final EditFormUIAction<D, U> editAction; - private final OpenCloseDataFormUIAction<U> openCloseDataAction; + private final FormUIActionHandler editActionHandler = new FormUIActionHandler() { - public ObserveOpenDataFormUIHandler() { - deleteAction = new DeleteFormUIAction<D, U>() { + private D dto; + boolean created; - @Override - protected boolean askToDelete(D dto) { - return askToDelete0(dto); - } + @Override + public boolean before() { + dto = model.getBean(); + created = dto.isNotPersisted(); + return checkEdit(); + } - @Override - protected void afterDelete(D dto) { - afterDelete0(dto); - } + @Override + public void run() { + model.save(); + } - @Override - protected void doDelete(D dto) { - model.delete(); - } - }; - editAction = new EditFormUIAction<D, U>() { + @Override + public void after() { + afterSave0(dto, created); + } - @Override - protected boolean askToSave(D dto) { - return askToSave0(dto); - } + @Override + public FormUI getUI() { + return ui; + } + }; - @Override - protected void doSave(D dto) { - model.save(); - } + private final FormUIActionHandler deleteActionHandler = new FormUIActionHandler() { - @Override - protected void afterSave(D dto, boolean created) { - afterSave0(dto, created); - } - }; - openCloseDataAction = new OpenCloseDataFormUIAction<U>() { - @Override - protected boolean doOpenData(String parentId, String id) { - return false; - } + @Override + public boolean before() { + return confirmForEntityDelete(model.getBeanType(), model.getBean()); + } + + @Override + public void run() { + model.delete(); + } - @Override - protected void afterOpenData(String parentId, String id) { + @Override + public void after() { - } + doCloseData(); - @Override - protected boolean doCloseData(String parentId, String id) { - return false; - } + model.loadFormDependencies(dataSource, true); + model.updateUi(); - @Override - protected void afterCloseData(String parentId, String id) { + stopEdit(); + validationManager.removeAllMessages(); - } - }; + NavigationTreeNodeSupport node = navigation.getSelectedNode(); + NavigationTreeNodeSupport parentNode = node.getParent(); + navigation.removeNode(node); + navigation.selectNode(parentNode); + + } + + @Override + public FormUI getUI() { + return ui; + } + }; + + private final FormUIActionHandler openDataActionHandler = new FormUIActionHandler() { + + @Override + public boolean before() { + return true; + } + + @Override + public void run() { + doOpenData(); + } + + @Override + public void after() { + + } + + @Override + public FormUI getUI() { + return ui; + } + }; + private final FormUIActionHandler closeDataActionHandler = new FormUIActionHandler() { + + @Override + public boolean before() { + return true; + } + + @Override + public void run() { + doCloseData(); + } + + @Override + public void after() { + + } + + @Override + public FormUI getUI() { + return ui; + } + }; + + protected ObserveOpenDataFormUIHandler() { } @Override @@ -125,66 +172,64 @@ public abstract class ObserveOpenDataFormUIHandler<D extends OpenableDto, R exte log.info(String.format("%s init ui", prefix)); - computeContentIcon(); - ui.getOpenActions().setVisible(model.isCanWrite()); updateToolbarActions(); updateExtra(); - setTitle(mainUI.getNavigation()); + if (!model.isReadingMode()) { + startEdit(); + model.setModified(model.isCreatingMode()); + } grabFocusOnForm(); } - protected void updateExtra() { - } - @Override - public final void openData() { - openCloseDataAction.openData(ui, model.getSelectedParentId(), model.getBean().getId()); + public boolean closeUI() { + //FIXME!!! + return false; } @Override - public final void closeData() { - openCloseDataAction.closeData(ui, model.getSelectedParentId(), model.getBean().getId()); + public void destroyUI() { + //FIXME!!! } @Override - public final void saveEdit() { - editAction.save(ui, model.getBean()); + public final void openData() { + run(openDataActionHandler); } @Override - public void destroyUI() { -//FIXME!!! + public final void closeData() { + run(closeDataActionHandler); } @Override - public boolean closeUI() { + public void startEdit() { //FIXME!!! - return false; } @Override - public void startEdit() { + public void stopEdit() { //FIXME!!! } @Override - public void stopEdit() { + public void resetEdit() { //FIXME!!! } @Override - public void resetEdit() { -//FIXME!!! + public final void saveEdit() { + run(editActionHandler); } @Override public void createData() { - + //FIXME!!! } @Override public final void deleteData() { - deleteAction.delete(ui, model.getBean()); + run(deleteActionHandler); } @Override @@ -192,12 +237,6 @@ public abstract class ObserveOpenDataFormUIHandler<D extends OpenableDto, R exte return new OpenDataFormUIInitializerContext<>(ui, filters); } - @Override - protected void initialize(ObserveFormUIInitializerContext<U> initializerContext) { - validationManager = new FormUIValidationMessageManager(model.getDataType(), ui); - super.initialize(initializerContext); - } - public boolean doCloseData() { return false; } @@ -206,16 +245,6 @@ public abstract class ObserveOpenDataFormUIHandler<D extends OpenableDto, R exte return false; } - protected void setTitle(NavigationTree treeHelper) { - //FIXME!!! - } - - @Override - protected void updateToolbarActions() { - super.updateToolbarActions(); - ui.getOpenActions().setVisible(dataSource.canWriteData()); - } - // @Override // public final FormUIMode computeContentMode(ClientDataContext dataContext, OpenDtoManager openDataManager) { // String id = getModel().getSelectedId(); @@ -262,9 +291,9 @@ public abstract class ObserveOpenDataFormUIHandler<D extends OpenableDto, R exte try { - UIHelper.openLink(url); + SwingUtil.openLink(url); } catch (Exception e) { - UIHelper.handlingError(e); + ui.getMainUI().handlingError(e); } } @@ -283,11 +312,7 @@ public abstract class ObserveOpenDataFormUIHandler<D extends OpenableDto, R exte } - private boolean askToSave0(D dto) { - return checkEdit(); - } - - public void afterSave0(D bean, boolean create) { + protected void afterSave0(D bean, boolean create) { if (create) { doOpenData(); @@ -343,28 +368,61 @@ public abstract class ObserveOpenDataFormUIHandler<D extends OpenableDto, R exte } } - private boolean askToDelete0(D dto) { - if (!ObserveFormUIHandler.confirmForEntityDelete(model.getDataType(), dto)) { - return false; - } - return true; - } - - private void afterDelete0(D dto) { - - doCloseData(); - - model.loadFormDependencies(dataSource, true); - model.updateUi(); - stopEdit(); - validationManager.removeAllMessages(); - - NavigationTreeNodeSupport node = navigation.getSelectedNode(); - NavigationTreeNodeSupport parentNode = node.getParent(); - navigation.removeNode(node); - navigation.selectNode(parentNode); +// protected abstract boolean doCloseData(String parentId, String id); +// { +// OpenableDtoUIContext<E> type = getModel().getType(); +// ClientDataContext dataContext = openAction.getDataContext(); +// boolean result = type.isOpen(); +// if (result) { +// type.close(getModel().getSelectedId()); +// } +// return result; +// } +// +// protected abstract boolean doOpenData(String parentId, String id); +// { +// OpenableDtoUIContext<E> type = getModel().getType(); +// String id = getModel().getSelectedId(); +// boolean result = type.canOpen(id); +// if (result) { +// type.open(getModel().getSelectedParentId(), id); +// } +// return result; +// } - } +// protected abstract void afterOpenData(String parentId, String id); +// { +// U ui = getUi(); +// // On charge les ensembles de références utilisées dans les combobox +// getOpenAction().loadFormDependencies(); +// getOpenAction().updateUi(); +// +// // on repaint le parent (le program devient alors ouvert) +// NavigationTree treeHelper = openAction.getNavigationTree(); +// treeHelper.reloadSelectedNode(true, true); +// +// // on chage l'état 'canReopen' du model +// ui.getModel().setCanReopen(false); +// +// // on lance l'édition +// ui.restartEdit(); +// } +// protected abstract void afterCloseData(String parentId, String id); +// { +// ContentOpenableUIModel<E> model = getModel(); +// model.setCanReopen(true); +// E bean = getModel().getBean(); +// getUi().stopEdit(); +// model.setMode(FormUIMode.READ); +// +// getOpenAction().computeMessages(); +// +// NavigationTree treeHelper = openAction.getNavigationTree(); +// treeHelper.reloadSelectedNode(IdHelper.isTrip(bean), true); +// getOpenAction().updateActions(); +// +// getOpenAction().grabFocusOnForm(); +// } } ===================================== client/src/main/java/fr/ird/observe/client/form/open/ObserveOpenDataFormUIModel.java ===================================== --- a/client/src/main/java/fr/ird/observe/client/form/open/ObserveOpenDataFormUIModel.java +++ b/client/src/main/java/fr/ird/observe/client/form/open/ObserveOpenDataFormUIModel.java @@ -30,6 +30,7 @@ import fr.ird.observe.client.spi.ClientDataContext; import fr.ird.observe.client.spi.context.DtoUIContext; import fr.ird.observe.client.spi.context.OpenableDtoUIContext; import fr.ird.observe.client.tools.ObserveOpenDataManager; +import fr.ird.observe.client.tree.navigation.NavigationTree; import fr.ird.observe.client.validation.ClientValidationContext; import fr.ird.observe.dto.data.OpenableDto; import fr.ird.observe.dto.data.seine.TripSeineDto; @@ -63,6 +64,7 @@ public abstract class ObserveOpenDataFormUIModel<D extends OpenableDto, R extend private final SingletonSupplier<ObserveSwingDataSource> dataSource; private final SingletonSupplier<ObserveOpenDataManager> openDataManager; private final SingletonSupplier<DecoratorService> decoratorService; + private final SingletonSupplier<NavigationTree> navigation; public abstract void computeReadMessages(ClientDataContext dataContext, FormUIValidationMessageManager validationManager); @@ -73,10 +75,11 @@ public abstract class ObserveOpenDataFormUIModel<D extends OpenableDto, R extend public ObserveOpenDataFormUIModel(OpenableDtoUIContext<D, R> dtoContext, Supplier<S> service) { super(dtoContext); this.service = SingletonSupplier.of(service); - dataSource = SingletonSupplier.of(ObserveClientApplicationContext.get().getDataSourcesManager()::getMainDataSource); - openDataManager = SingletonSupplier.of(ObserveClientApplicationContext.get()::getOpenDataManager); - decoratorService = SingletonSupplier.of(ObserveClientApplicationContext.get()::getDecoratorService); - dataContext = SingletonSupplier.of(ObserveClientApplicationContext.get()::getDataContext); + dataSource = SingletonSupplier.of(() -> ObserveClientApplicationContext.get().getDataSourcesManager().getMainDataSource()); + openDataManager = SingletonSupplier.of(() -> ObserveClientApplicationContext.get().getOpenDataManager()); + decoratorService = SingletonSupplier.of(() -> ObserveClientApplicationContext.get().getDecoratorService()); + dataContext = SingletonSupplier.of(() -> ObserveClientApplicationContext.get().getDataContext()); + navigation = SingletonSupplier.of(() -> ObserveClientApplicationContext.get().getMainUI().getNavigation()); } public final S getService() { @@ -99,6 +102,10 @@ public abstract class ObserveOpenDataFormUIModel<D extends OpenableDto, R extend return decoratorService.get(); } + public NavigationTree getNavigation() { + return navigation.get(); + } + public void loadOrPreCreateForm() { } @@ -122,6 +129,7 @@ public abstract class ObserveOpenDataFormUIModel<D extends OpenableDto, R extend setCanWrite(); setContentMode(); setForm(); + setSelectedNode(getNavigation().getSelectedNode()); computeValidationMessages(validationManager); } @@ -268,6 +276,4 @@ public abstract class ObserveOpenDataFormUIModel<D extends OpenableDto, R extend // public void obtainChildPosition() { // position = getOpenCloseServiceAction().getDataPosition(getSelectedParentId(), getSelectedId()); // } - - } ===================================== client/src/main/java/fr/ird/observe/client/form/open/seine/ActivitySeineUIHandler.java ===================================== --- a/client/src/main/java/fr/ird/observe/client/form/open/seine/ActivitySeineUIHandler.java +++ b/client/src/main/java/fr/ird/observe/client/form/open/seine/ActivitySeineUIHandler.java @@ -31,7 +31,6 @@ import fr.ird.observe.dto.referential.seine.VesselActivitySeineReference; import java.util.List; import java.util.Optional; import javax.swing.SwingUtilities; -import org.nuiton.jaxx.runtime.spi.UIHandler; import static org.nuiton.i18n.I18n.t; @@ -40,7 +39,7 @@ import static org.nuiton.i18n.I18n.t; * @author Tony Chemit - dev@tchemit.fr * @since 1.0 */ -class ActivitySeineUIHandler extends ObserveOpenDataFormUIHandler<ActivitySeineDto, ActivitySeineReference, ActivitySeineUIModel, ActivitySeineUI> implements UIHandler<ActivitySeineUI> { +class ActivitySeineUIHandler extends ObserveOpenDataFormUIHandler<ActivitySeineDto, ActivitySeineReference, ActivitySeineUIModel, ActivitySeineUI> { ActivitySeineUIHandler() { super(); @@ -49,7 +48,6 @@ class ActivitySeineUIHandler extends ObserveOpenDataFormUIHandler<ActivitySeineD @Override protected void initialize(ObserveFormUIInitializerContext<ActivitySeineUI> initializerContext) { super.initialize(initializerContext); - ActivitySeineUI ui = initializerContext.getUi(); String label = getActivity6Label(); String text = t("observe.common.ActivitySeineDto.vesselActivitySeine.comment", label); ui.vesselActivityInformation.setText(text); ===================================== client/src/main/java/fr/ird/observe/client/form/openlist/ObserveOpenDataListFormUIHandler.java ===================================== --- a/client/src/main/java/fr/ird/observe/client/form/openlist/ObserveOpenDataListFormUIHandler.java +++ b/client/src/main/java/fr/ird/observe/client/form/openlist/ObserveOpenDataListFormUIHandler.java @@ -23,9 +23,10 @@ package fr.ird.observe.client.form.openlist; */ import com.google.common.collect.ImmutableMap; +import fr.ird.observe.client.form.FormUI; import fr.ird.observe.client.form.ObserveFormUIHandler; import fr.ird.observe.client.form.ObserveFormUIInitializerContext; -import fr.ird.observe.client.form.action.OpenCloseDataFormUIAction; +import fr.ird.observe.client.form.action.FormUIActionHandler; import fr.ird.observe.client.form.spi.FormUIValidationMessageManager; import fr.ird.observe.client.form.spi.ReferentialReferencesFilter; import fr.ird.observe.client.tree.navigation.nodes.NavigationTreeNodeSupport; @@ -54,31 +55,57 @@ public abstract class ObserveOpenDataListFormUIHandler<D extends OpenableDto, R /** Logger. */ private static final Log log = LogFactory.getLog(ObserveOpenDataListFormUIHandler.class); - private final OpenCloseDataFormUIAction<U> openCloseDataAction; + private final FormUIActionHandler openDataActionHandler = new FormUIActionHandler() { - protected ObserveOpenDataListFormUIHandler() { - this.openCloseDataAction = new OpenCloseDataFormUIAction<U>() { + @Override + public boolean before() { + return true; + } - @Override - protected boolean doOpenData(String parentId, String id) { - return false; - } + @Override + public void run() { + List<R> selectedData = model.getSelectedData(); + String parentId = model.getSelectedParentId(); + String id = selectedData.get(0).getId(); + //FIXME!!! + } - @Override - protected void afterOpenData(String parentId, String id) { + @Override + public void after() { - } + } - @Override - protected boolean doCloseData(String parentId, String id) { - return false; - } + @Override + public FormUI getUI() { + return ui; + } + }; + private final FormUIActionHandler closeDataActionHandler = new FormUIActionHandler() { + + @Override + public boolean before() { + return true; + } - @Override - protected void afterCloseData(String parentId, String id) { + @Override + public void run() { + String parentId = model.getSelectedParentId(); + String id = model.getType().getOpenId(); + //FIXME!!! + } - } - }; + @Override + public void after() { + + } + + @Override + public FormUI getUI() { + return ui; + } + }; + + protected ObserveOpenDataListFormUIHandler() { } @Override @@ -88,7 +115,7 @@ public abstract class ObserveOpenDataListFormUIHandler<D extends OpenableDto, R @Override protected void initialize(ObserveFormUIInitializerContext<U> initializerContext) { - validationManager = new FormUIValidationMessageManager(model.getChildType(), ui); + validationManager = new FormUIValidationMessageManager(model.getBeanType(), ui); super.initialize(initializerContext); OpenableDataDtoListCellRenderer<D, R> cellRenderer = new OpenableDataDtoListCellRenderer<>(ui.getList().getCellRenderer(), navigation); @@ -121,15 +148,14 @@ public abstract class ObserveOpenDataListFormUIHandler<D extends OpenableDto, R model.openUI(validationManager, navigation); log.info(String.format("%s init ui", prefix)); - computeContentIcon(); updateToolbarActions(); - setTitle(); + updateExtra(); grabFocusOnForm(); } @Override public void destroyUI() { - + //FIXME!!! } @Override @@ -139,14 +165,12 @@ public abstract class ObserveOpenDataListFormUIHandler<D extends OpenableDto, R @Override public final void openData() { - List<R> selectedData = model.getSelectedData(); - openCloseDataAction.openData(ui, model.getSelectedParentId(), selectedData.get(0).getId()); + run(openDataActionHandler); } @Override public final void closeData() { - String selectedData = model.getType().getOpenId(); - openCloseDataAction.closeData(ui, model.getSelectedParentId(), selectedData); + run(closeDataActionHandler); } @Override @@ -163,11 +187,6 @@ public abstract class ObserveOpenDataListFormUIHandler<D extends OpenableDto, R //FIXME!!! } - protected void setTitle() { - //FIXME!!! - } - - private void updateList(List<R> data) { BeanListHeader<R> list = ui.getListHeader(); if (CollectionUtils.isNotEmpty(data)) { ===================================== client/src/main/java/fr/ird/observe/client/form/openlist/longline/TripLonglineListUIHandler.java ===================================== --- a/client/src/main/java/fr/ird/observe/client/form/openlist/longline/TripLonglineListUIHandler.java +++ b/client/src/main/java/fr/ird/observe/client/form/openlist/longline/TripLonglineListUIHandler.java @@ -41,7 +41,7 @@ class TripLonglineListUIHandler extends ObserveOpenDataListFormUIHandler<TripLon } @Override - protected void setTitle() { + protected void updateExtra() { TripLonglineListNavigationTreeNode selectedNode = (TripLonglineListNavigationTreeNode) navigation.getSelectedNode(); ProgramReference data = selectedNode.getData(); //FIXME!!! ===================================== client/src/main/java/fr/ird/observe/client/form/openlist/seine/TripSeineListUIHandler.java ===================================== --- a/client/src/main/java/fr/ird/observe/client/form/openlist/seine/TripSeineListUIHandler.java +++ b/client/src/main/java/fr/ird/observe/client/form/openlist/seine/TripSeineListUIHandler.java @@ -38,7 +38,7 @@ class TripSeineListUIHandler extends ObserveOpenDataListFormUIHandler<TripSeineD } @Override - protected void setTitle() { + protected void updateExtra() { TripSeineListNavigationTreeNode selectedNode = (TripSeineListNavigationTreeNode) navigation.getSelectedNode(); ProgramReference data = selectedNode.getData(); String title = decoratorService.getReferentialReferenceDecorator(ProgramReference.class).toString(data); ===================================== client/src/main/java/fr/ird/observe/client/form/referential/ObserveReferentialFormUIHandler.java ===================================== --- a/client/src/main/java/fr/ird/observe/client/form/referential/ObserveReferentialFormUIHandler.java +++ b/client/src/main/java/fr/ird/observe/client/form/referential/ObserveReferentialFormUIHandler.java @@ -24,19 +24,19 @@ package fr.ird.observe.client.form.referential; import com.google.common.collect.ImmutableMap; import fr.ird.observe.client.ObserveClientApplicationContext; +import fr.ird.observe.client.form.FormUI; import fr.ird.observe.client.form.FormUIMode; import fr.ird.observe.client.form.ObserveFormUIHandler; import fr.ird.observe.client.form.ObserveFormUIInitializerContext; -import fr.ird.observe.client.form.action.DeleteFormUIAction; -import fr.ird.observe.client.form.action.EditFormUIAction; +import fr.ird.observe.client.form.action.FormUIActionHandler; import fr.ird.observe.client.form.referential.usage.UsageForDeleteUI; import fr.ird.observe.client.form.referential.usage.UsageForDesactivateUI; import fr.ird.observe.client.form.referential.usage.UsageForDisplayUI; import fr.ird.observe.client.form.spi.FormUIValidationMessageManager; import fr.ird.observe.client.form.spi.ReferentialReferencesFilter; -import fr.ird.observe.client.tree.navigation.NavigationTree; import fr.ird.observe.client.util.UIHelper; import fr.ird.observe.client.validation.ClientValidationContext; +import fr.ird.observe.dto.IdHelper; import fr.ird.observe.dto.decoration.DecoratorService; import fr.ird.observe.dto.decoration.ObserveI18nDecoratorHelper; import fr.ird.observe.dto.decoration.decorators.ReferentialReferenceDecorator; @@ -46,7 +46,6 @@ import fr.ird.observe.dto.referential.I18nReferentialDto; import fr.ird.observe.dto.referential.ProgramDto; import fr.ird.observe.dto.referential.ProgramHelper; import fr.ird.observe.dto.referential.ProgramReference; -import fr.ird.observe.dto.referential.ReferenceStatus; import fr.ird.observe.dto.referential.ReferentialDto; import fr.ird.observe.dto.referential.ReferentialLocale; import fr.ird.observe.services.service.referential.ReferentialService; @@ -99,10 +98,109 @@ public abstract class ObserveReferentialFormUIHandler<D extends ReferentialDto, private final Runnable revalidate; private final ReferentialLocale referentialLocale; private final ReferentialService referentialService; - private final DeleteFormUIAction<D, U> deleteAction; - private final EditFormUIAction<D, U> editAction; private R replaceReference; + private final FormUIActionHandler editActionHandler = new FormUIActionHandler() { + + private D dto; + private boolean created; + + @Override + public boolean before() { + dto = model.getBean(); + created = dto.isNotPersisted(); + return askToSave0(dto); + } + + @Override + public void run() { + if (created) { + + log.info(String.format("%s Create referential %s", prefix, dto)); + + model.save(); + + model.loadFormDependencies(dataSource, true); + + return; + } + + log.info(String.format("%s Update existing referential : %s", prefix, dto.getId())); + + if (replaceReference != null) { + + referentialService.replaceReference(model.getBeanType(), dto.getId(), replaceReference.getId()); + } + + model.save(); + + model.loadFormDependencies(dataSource, true); + } + + @Override + public void after() { + model.updateUi(); + + if (dto instanceof ProgramDto) { + + if (created) { + + // add the program in tree + ProgramReference reference = ProgramDto.dtoContext().toReference(referentialLocale, (ProgramDto) dto); + navigation.addProgram(reference); + } else { + + // update the program in tree + navigation.updateProgram((ProgramDto) dto); + } + } + } + + @Override + public FormUI getUI() { + return ui; + } + }; + + private final FormUIActionHandler deleteActionHandler = new FormUIActionHandler() { + + private String id; + + @Override + public boolean before() { + id = model.getBean().getId(); + return askToDelete0(model.getBean()); + } + + @Override + public void run() { + if (replaceReference != null) { + referentialService.replaceReference(model.getBeanType(), id, replaceReference.getId()); + } + model.delete(); + } + + @Override + public void after() { + if (IdHelper.isProgramId(id)) { + + // remove the program in tree + navigation.removeProgram(id); + } + + model.loadFormDependencies(dataSource, true); + model.updateUi(); + + stopEdit(); + validationManager.removeAllMessages(); + } + + @Override + public FormUI getUI() { + return ui; + } + }; + protected ObserveReferentialFormUIHandler() { revalidate = () -> { @@ -120,40 +218,6 @@ public abstract class ObserveReferentialFormUIHandler<D extends ReferentialDto, }; referentialService = MAIN.getReferentialService(); referentialLocale = decoratorService.getReferentialLocale(); - deleteAction = new DeleteFormUIAction<D, U>() { - - @Override - protected boolean askToDelete(D dto) { - return askToDelete0(dto); - } - - @Override - protected void afterDelete(D dto) { - afterDelete0(dto); - } - - @Override - protected void doDelete(D dto) { - doDelete0(dto); - } - }; - editAction = new EditFormUIAction<D, U>() { - - @Override - protected boolean askToSave(D dto) { - return askToSave0(dto); - } - - @Override - protected void afterSave(D dto, boolean created) { - afterSave0(dto, created); - } - - @Override - protected void doSave(D dto) { - doSave0(dto); - } - }; } @@ -164,7 +228,7 @@ public abstract class ObserveReferentialFormUIHandler<D extends ReferentialDto, @Override protected void initialize(ObserveFormUIInitializerContext<U> initializerContext) { - validationManager = new FormUIValidationMessageManager(model.getDataType(), ui); + validationManager = new FormUIValidationMessageManager(model.getBeanType(), ui); super.initialize(initializerContext); ui.getViewLayout().addPropertyChangeListener(CardLayout2Ext.SELECTED_PROPERTY_NAME, evt -> SwingUtilities.invokeLater(revalidate)); @@ -180,17 +244,15 @@ public abstract class ObserveReferentialFormUIHandler<D extends ReferentialDto, model.openUI(validationManager); log.info(String.format("%s init ui", prefix)); - computeContentIcon(); updateToolbarActions(); - setTitle(navigation); updateExtra(); grabFocusOnForm(); } + @Override + protected void updateExtra() { - private void updateExtra() { - - if (I18nReferentialDto.class.isAssignableFrom(model.getDataType())) { + if (I18nReferentialDto.class.isAssignableFrom(model.getBeanType())) { // on met en gras le libelle selectionne en base ReferentialLocale localeEnum; @@ -227,15 +289,6 @@ public abstract class ObserveReferentialFormUIHandler<D extends ReferentialDto, } } - protected void setTitle(NavigationTree treeHelper) { - //FIXME!!! - } - - @Override - public U getUi() { - return ui; - } - @Override public void destroyUI() { //FIXME!!! @@ -249,7 +302,7 @@ public abstract class ObserveReferentialFormUIHandler<D extends ReferentialDto, @Override public final void saveEdit() { - editAction.save(ui, model.getBean()); + run(editActionHandler); } @Override @@ -261,7 +314,7 @@ public abstract class ObserveReferentialFormUIHandler<D extends ReferentialDto, } else { - Form<D> form = getMainService().loadForm(model.getDataType(), selectedReference.getId()); + Form<D> form = getMainService().loadForm(model.getBeanType(), selectedReference.getId()); D selectedBean = form.getObject(); @@ -286,7 +339,7 @@ public abstract class ObserveReferentialFormUIHandler<D extends ReferentialDto, @Override public void showUniqueKeys(JButton button) { - Class<D> beanType = model.getDataType(); + Class<D> beanType = model.getBeanType(); Class<R> referenceType = model.getReferenceType(); List<R> entities = model.getReferentialReferences(referenceType); @@ -384,7 +437,7 @@ public abstract class ObserveReferentialFormUIHandler<D extends ReferentialDto, ImmutableSetDtoMap<ReferentialDtoReference> usages = getMainService().findAllUsages(bean); ReferentialReferenceDecorator<R> decorator = decoratorService.getReferentialReferenceDecorator(model.getReferenceType()); - String type = ObserveI18nDecoratorHelper.getTypeI18nKey(model.getDataType()); + String type = ObserveI18nDecoratorHelper.getTypeI18nKey(model.getBeanType()); type = t(type); String message = t("observe.message.show.usages", type, decorator.toString(bean)); @@ -422,13 +475,14 @@ public abstract class ObserveReferentialFormUIHandler<D extends ReferentialDto, model.setMode(FormUIMode.CREATE); if (log.isDebugEnabled()) { - log.debug("Will create new entity [" + model.getDataType().getName() + "]"); + log.debug("Will create new entity [" + model.getBeanType().getName() + "]"); } model.copyBean(null); startEdit(); } + @Override public void startEdit() { FormUIMode mode = model.getMode(); @@ -535,7 +589,7 @@ public abstract class ObserveReferentialFormUIHandler<D extends ReferentialDto, @Override public void deleteData() { - deleteAction.delete(ui, model.getBean()); + run(deleteActionHandler); } private void updateView(boolean editing) { @@ -545,7 +599,7 @@ public abstract class ObserveReferentialFormUIHandler<D extends ReferentialDto, ui.getViewLayout().setSelected(editing ? ReferentialFormUI.DETAIL_VIEW : ReferentialFormUI.LIST_VIEW); } - protected boolean canSave(String parentId, D bean) { + private boolean askToSave0(D bean) { if (model.isCreatingMode()) { return true; @@ -556,9 +610,7 @@ public abstract class ObserveReferentialFormUIHandler<D extends ReferentialDto, replaceReference = null; - if (oldBean != null && - oldBean.getStatus() == ReferenceStatus.enabled && - bean.getStatus() == ReferenceStatus.disabled) { + if (oldBean != null && oldBean.isEnabled() && !bean.isEnabled()) { // l'entite a ete desactive // on recherche les objets utilisant cette entitee @@ -584,7 +636,7 @@ public abstract class ObserveReferentialFormUIHandler<D extends ReferentialDto, .filter(r -> !bean.getId().equals(r.getId())) .collect(Collectors.toList()); - if (ProgramDto.class.equals(model.getDataType())) { + if (ProgramDto.class.equals(model.getBeanType())) { referenceList = (List) ProgramHelper.filterGearType((List) referenceList, ((ProgramDto) model.getBean()).getGearType()); } @@ -669,7 +721,7 @@ public abstract class ObserveReferentialFormUIHandler<D extends ReferentialDto, .filter(r -> !dto.getId().equals(r.getId())) .collect(Collectors.toList()); - if (ProgramDto.class.equals(model.getDataType())) { + if (ProgramDto.class.equals(model.getBeanType())) { referenceList = (List) ProgramHelper.filterGearType((List) referenceList, ((ProgramDto) model.getBean()).getGearType()); } if (log.isDebugEnabled()) { @@ -694,35 +746,12 @@ public abstract class ObserveReferentialFormUIHandler<D extends ReferentialDto, } } - if (!ObserveFormUIHandler.confirmForEntityDelete(model.getDataType(), dto)) { + if (!ObserveFormUIHandler.confirmForEntityDelete(model.getBeanType(), dto)) { return false; } return true; } - private void doDelete0(D dto) { - String id = dto.getId(); - if (replaceReference != null) { - referentialService.replaceReference(model.getDataType(), id, replaceReference.getId()); - } - model.delete(); - } - - private void afterDelete0(D dto) { - if (dto instanceof ProgramDto) { - - // remove the program in tree - navigation.removeProgram(dto.getId()); - } - - model.loadFormDependencies(dataSource, true); - model.updateUi(); - - stopEdit(); - validationManager.removeAllMessages(); - } - - private <E extends ReferentialDto, R extends ReferentialDtoReference<E, R>> Pair<Boolean, R> showUsagesForDelete(E entity, ImmutableSetDtoMap<ReferentialDtoReference> usages, List<R> referenceList) { @@ -757,51 +786,4 @@ public abstract class ObserveReferentialFormUIHandler<D extends ReferentialDto, return Pair.of(false, null); } - - private boolean askToSave0(D dto) { - return true; - } - - private void doSave0(D dto) { - if (model.isCreatingMode()) { - - log.info(String.format("%s Create referential %s", prefix, dto)); - - model.save(); - - model.loadFormDependencies(dataSource, true); - - return; - } - - log.info(String.format("%s Update existing referential : %s", prefix, dto.getId())); - - if (replaceReference != null) { - - referentialService.replaceReference(model.getDataType(), dto.getId(), replaceReference.getId()); - } - - model.save(); - - model.loadFormDependencies(dataSource, true); - } - - private void afterSave0(D dto, boolean created) { - model.updateUi(); - - if (dto instanceof ProgramDto) { - - if (created) { - - // add the program in tree - ProgramReference reference = ProgramDto.dtoContext().toReference(referentialLocale, (ProgramDto) dto); - navigation.addProgram(reference); - } else { - - // update the program in tree - navigation.updateProgram((ProgramDto) dto); - } - } - - } } ===================================== client/src/main/java/fr/ird/observe/client/form/referential/ObserveReferentialFormUIModel.java ===================================== --- a/client/src/main/java/fr/ird/observe/client/form/referential/ObserveReferentialFormUIModel.java +++ b/client/src/main/java/fr/ird/observe/client/form/referential/ObserveReferentialFormUIModel.java @@ -130,7 +130,7 @@ public abstract class ObserveReferentialFormUIModel<D extends ReferentialDto, R } public void delete() { - getService().delete(getDataType(), getBean().getId()); + getService().delete(getBeanType(), getBean().getId()); } public void openUI(FormUIValidationMessageManager validationManager) { ===================================== client/src/main/java/fr/ird/observe/client/form/simple/ObserveMainDataFormUIHandler.java ===================================== --- a/client/src/main/java/fr/ird/observe/client/form/simple/ObserveMainDataFormUIHandler.java +++ b/client/src/main/java/fr/ird/observe/client/form/simple/ObserveMainDataFormUIHandler.java @@ -22,13 +22,12 @@ package fr.ird.observe.client.form.simple; * #L% */ +import fr.ird.observe.client.form.FormUI; import fr.ird.observe.client.form.ObserveFormUIHandler; +import fr.ird.observe.client.form.action.FormUIActionHandler; import fr.ird.observe.client.form.spi.FormUIValidationMessageManager; -import fr.ird.observe.client.util.UIHelper; +import fr.ird.observe.client.tree.navigation.nodes.NavigationTreeNodeSupport; import fr.ird.observe.dto.data.DataDto; -import fr.ird.observe.services.action.DeleteServiceAction; -import fr.ird.observe.services.action.SaveDtoServiceAction; -import fr.ird.observe.services.service.ObserveService; /** * Created by tchemit on 02/10/17. @@ -41,26 +40,34 @@ public abstract class ObserveMainDataFormUIHandler<D extends DataDto, M extends super(); } - public final void delete() { - boolean ok = false; - stopEdit(); - validationManager.removeAllMessages(); + private final FormUIActionHandler deleteActionHandler = new FormUIActionHandler() { + + private String id; + + @Override + public boolean before() { + id = model.getBean().getId(); + return askToDelete(model.getBean()); + } - try { - ok = askToDelete(getBean()); - if (ok) { - doDelete(model.getSelectedParentId(), model.getBean()); - } else { - restartEditUI(); - } - } catch (Exception e) { - UIHelper.handlingError(e); - } finally { - if (ok) { - dataSource.setModified(true); - afterDelete(validationManager); - } + @Override + public void run() { + doDelete(model.getSelectedParentId(), model.getBean()); } + + @Override + public void after() { + afterDelete(validationManager); + } + + @Override + public FormUI getUI() { + return ui; + } + }; + + public final void delete() { + run(deleteActionHandler); } protected void doDelete(String parentId, D bean) { @@ -70,19 +77,14 @@ public abstract class ObserveMainDataFormUIHandler<D extends DataDto, M extends protected void afterDelete(FormUIValidationMessageManager validationManager) { stopEdit(); validationManager.removeAllMessages(); - //FIXME!!! Place this on referential ui -// if (!(getModel().getBean() instanceof ReferentialDto)) { -// -// NavigationTree navigation = getOpenAction().getNavigationTree(); -// NavigationTreeNodeSupport node = navigation .getSelectedNode(); -// NavigationTreeNodeSupport parentNode = node.getParent(); -// navigation .removeNode(node); -// navigation .selectNode(parentNode); -// } + NavigationTreeNodeSupport node = navigation.getSelectedNode(); + NavigationTreeNodeSupport parentNode = node.getParent(); + navigation.removeNode(node); + navigation.selectNode(parentNode); } protected boolean askToDelete(D bean) { - return !ObserveFormUIHandler.confirmForEntityDelete(model.getDataType(), bean); + return !ObserveFormUIHandler.confirmForEntityDelete(model.getBeanType(), bean); } } ===================================== client/src/main/java/fr/ird/observe/client/form/simple/ObserveSimpleDataFormUIHandler.java ===================================== --- a/client/src/main/java/fr/ird/observe/client/form/simple/ObserveSimpleDataFormUIHandler.java +++ b/client/src/main/java/fr/ird/observe/client/form/simple/ObserveSimpleDataFormUIHandler.java @@ -23,13 +23,13 @@ package fr.ird.observe.client.form.simple; */ import com.google.common.collect.ImmutableMap; +import fr.ird.observe.client.form.FormUI; import fr.ird.observe.client.form.ObserveFormUIHandler; import fr.ird.observe.client.form.ObserveFormUIInitializerContext; -import fr.ird.observe.client.form.action.EditFormUIAction; +import fr.ird.observe.client.form.action.FormUIActionHandler; import fr.ird.observe.client.form.openlist.ObserveOpenDataListFormUIHandler; import fr.ird.observe.client.form.spi.FormUIValidationMessageManager; import fr.ird.observe.client.form.spi.ReferentialReferencesFilter; -import fr.ird.observe.client.tree.navigation.NavigationTree; import fr.ird.observe.dto.data.DataDto; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -45,30 +45,33 @@ public abstract class ObserveSimpleDataFormUIHandler<D extends DataDto, M extend /** Logger. */ private static final Log log = LogFactory.getLog(ObserveOpenDataListFormUIHandler.class); - private final EditFormUIAction<D, U> editAction; + private final FormUIActionHandler editActionHandler = new FormUIActionHandler() { + private boolean created; - protected ObserveSimpleDataFormUIHandler() { - editAction = new EditFormUIAction<D, U>() { + @Override + public boolean before() { + created = model.getBean().isNotPersisted(); + return askToSave0(model.getBean()); + } - @Override - protected boolean askToSave(D dto) { - return askToSave0(dto); - } + @Override + public void run() { + doSave0(model.getSelectedParentId(), model.getBean()); + } - @Override - protected void afterSave(D dto, boolean created) { - afterSave0(dto, created); - } + @Override + public void after() { + afterSave0(model.getBean(), created); + } - @Override - protected void doSave(D dto) { - doSave0(model.getSelectedParentId(), dto); - } - }; - } + @Override + public FormUI getUI() { + return ui; + } + }; protected void doSave0(String parentId, D dto) { - model.save(); + run(editActionHandler); } protected boolean askToSave0(D bean) { @@ -82,7 +85,7 @@ public abstract class ObserveSimpleDataFormUIHandler<D extends DataDto, M extend @Override protected void initialize(ObserveFormUIInitializerContext<U> initializerContext) { - validationManager = new FormUIValidationMessageManager(model.getDataType(), ui); + validationManager = new FormUIValidationMessageManager(model.getBeanType(), ui); super.initialize(initializerContext); } @@ -95,9 +98,7 @@ public abstract class ObserveSimpleDataFormUIHandler<D extends DataDto, M extend model.openUI(validationManager); log.info(String.format("%s init ui", prefix)); - computeContentIcon(); updateToolbarActions(); - setTitle(mainUI.getNavigation()); grabFocusOnForm(); } @@ -113,18 +114,9 @@ public abstract class ObserveSimpleDataFormUIHandler<D extends DataDto, M extend //FIXME!!! } - protected void setTitle(NavigationTree treeHelper) { - //FIXME!!! - } - - @Override - public U getUi() { - return ui; - } - @Override public void destroyUI() { - + //FIXME!!! } @Override @@ -139,47 +131,18 @@ public abstract class ObserveSimpleDataFormUIHandler<D extends DataDto, M extend @Override public void saveEdit() { - editAction.save(ui, getBean()); - } - - protected void attachValidators(D bean) { -//FIXME!!! - } - - protected void updateExtra() { - + run(editActionHandler); } public void afterSave0(D dto, boolean created) { dataSource.setModified(true); - // mettre les validateurs en mode non modifié SwingValidatorUtil.setValidatorChanged(ui, false); } public D getBean() { return model.getBean(); } - -// public final void save(boolean refresh) { -// boolean ok = askToSave0(model.getBean()); -// if (!ok) { -// // use cancel save -// return; -// } -// try { -// doSave(model.getSelectedParentId(), model.getBean(), openDataManager); -// } catch (Exception e) { -// UIHelper.handlingError(e); -// ok = false; -// } finally { -// if (ok) { -// dataSource.setModified(true); -// afterSave0(refresh); -// } -// } -// } - } ===================================== client/src/main/java/fr/ird/observe/client/form/simplelist/ObserveSimpleDataListFormUIHandler.java ===================================== --- a/client/src/main/java/fr/ird/observe/client/form/simplelist/ObserveSimpleDataListFormUIHandler.java +++ b/client/src/main/java/fr/ird/observe/client/form/simplelist/ObserveSimpleDataListFormUIHandler.java @@ -24,18 +24,15 @@ package fr.ird.observe.client.form.simplelist; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; +import fr.ird.observe.client.form.FormUI; import fr.ird.observe.client.form.ObserveFormUIHandler; import fr.ird.observe.client.form.ObserveFormUIInitializerContext; -import fr.ird.observe.client.form.action.EditDataListFormUIAction; -import fr.ird.observe.client.form.spi.FormUIValidationMessageManager; +import fr.ird.observe.client.form.action.FormUIActionHandler; import fr.ird.observe.client.form.spi.ReferentialReferencesFilter; import fr.ird.observe.client.form.spi.init.CoordinatesEditorInitializer; import fr.ird.observe.client.form.spi.init.TabInfoInitializer; -import fr.ird.observe.client.tree.navigation.NavigationTree; import fr.ird.observe.dto.data.DataDto; import fr.ird.observe.dto.data.DataListDto; -import fr.ird.observe.services.action.SaveDataListDtoServiceAction; -import fr.ird.observe.services.action.SaveRequestDto; import java.util.Optional; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -54,39 +51,29 @@ public abstract class ObserveSimpleDataListFormUIHandler<D extends DataDto, C ex /** Logger. */ private static final Log log = LogFactory.getLog(ObserveSimpleDataListFormUIHandler.class); - private final EditDataListFormUIAction<D, C, U> editAction; + private final FormUIActionHandler editActionHandler = new FormUIActionHandler() { + @Override + public boolean before() { + return checkEdit(); + } - protected ObserveSimpleDataListFormUIHandler() { - editAction = new EditDataListFormUIAction<D, C, U>() { - - @Override - protected boolean askToSave(DataListDto<D, C> dto) { - return askToSave0(dto); - } - - @Override - protected void afterSave(DataListDto<D, C> dto, boolean created) { - afterSave0(dto, created); - } - - @Override - protected void doSave(DataListDto<D, C> dto) { - model.save(); - } - }; - } + @Override + public void run() { + model.save(); + } - private void doSave0(SaveDataListDtoServiceAction<D, C> saveServiceAction, DataListDto<D, C> dto) { - saveServiceAction.save(SaveRequestDto.of(dto)); - } + @Override + public void after() { + afterSave0(); + } - private void afterSave0(DataListDto<D, C> dto, boolean created) { - dataSource.setModified(true); - SwingValidatorUtil.setValidatorChanged(ui, false); - } + @Override + public FormUI getUI() { + return ui; + } + }; - private boolean askToSave0(DataListDto<D, C> dto) { - return checkEdit(); + protected ObserveSimpleDataListFormUIHandler() { } @Override @@ -95,13 +82,7 @@ public abstract class ObserveSimpleDataListFormUIHandler<D extends DataDto, C ex } @Override - protected void initialize(ObserveFormUIInitializerContext<U> initializerContext) { - validationManager = new FormUIValidationMessageManager(model.getDataType(), ui); - super.initialize(initializerContext); - } - - @Override - public void openUI() { + public final void openUI() { resetValidationContext(); @@ -115,9 +96,7 @@ public abstract class ObserveSimpleDataListFormUIHandler<D extends DataDto, C ex tabModels.ifPresent(e -> TabInfoInitializer.onOpenUi(ui, e)); log.info(String.format("%s init ui", prefix)); - computeContentIcon(); updateToolbarActions(); - setTitle(navigation); updateExtra(); if (!model.isReadingMode()) { @@ -127,81 +106,53 @@ public abstract class ObserveSimpleDataListFormUIHandler<D extends DataDto, C ex grabFocusOnForm(); } - public void startEdit() { - prepareValidationContext(); - setEditing(); - attachValidators(getBean()); + private void afterSave0() { + dataSource.setModified(true); + SwingValidatorUtil.setValidatorChanged(ui, false); } - public void stopEdit() { - //FIXME!!! - } + @Override + public final void startEdit() { + prepareValidationContext(); - public void restartEditUI() { - //FIXME!!! - } + model.setEditing(true); - protected void setTitle(NavigationTree treeHelper) { - //FIXME!!! + attachValidators(getBean()); } @Override - public U getUi() { - return ui; + public final void stopEdit() { + //FIXME!!! } @Override - public void destroyUI() { + public final void destroyUI() { } @Override - public boolean closeUI() { + public final boolean closeUI() { return false; } @Override - public void resetEdit() { + public final void resetEdit() { //FIXME!!! } @Override - public void saveEdit() { - editAction.save(ui, getBean()); + public final void saveEdit() { + run(editActionHandler); } protected void attachValidators(DataListDto<D, C> bean) { //FIXME!!! } - protected void updateExtra() { - } - public DataListDto<D, C> getBean() { return model.getBean(); } -// protected SaveResultDto save(DataListDto<D, C> bean) { -// SaveResultDto saveResult = model.save(bean); -// saveResult.toDto(bean); -// return saveResult; -// } -// -// protected SaveResultDto save(String parentId, DataListDto<D, C> bean) { -// SaveResultDto saveResult = model.save(parentId, bean); -// saveResult.toDto(bean); -// return saveResult; -// } -// -// public Form<DataListDto<D, C>> loadForm(String id) { -// return model.loadForm(dataSource, id); -// } - - protected void setEditing() { - // mark ui as editing - model.setEditing(true); - } - private void prepareValidationContext() { detachValidators(); resetValidationContext(); @@ -216,7 +167,7 @@ public abstract class ObserveSimpleDataListFormUIHandler<D extends DataDto, C ex // if (referentialListHeader != null) { // List data = referentialListHeader.getData(); // ClientValidationContext validationContext = ObserveClientApplicationContext.get().getValidationContext(); -// log.debug(String.format("%s Set referentiel list [%s] in validation context : %d", prefix, getModel().getDataType().getSimpleName(), data.size())); +// log.debug(String.format("%s Set referentiel list [%s] in validation context : %d", prefix, getModel().getBeanType().getSimpleName(), data.size())); // validationContext.setEditingReferentielList(data); // } } ===================================== client/src/main/java/fr/ird/observe/client/form/table/ObserveDataTableFormUIHandler.java ===================================== --- a/client/src/main/java/fr/ird/observe/client/form/table/ObserveDataTableFormUIHandler.java +++ b/client/src/main/java/fr/ird/observe/client/form/table/ObserveDataTableFormUIHandler.java @@ -26,15 +26,15 @@ import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; import fr.ird.observe.client.ObserveClientApplicationContext; import fr.ird.observe.client.ObserveKeyStrokes; +import fr.ird.observe.client.form.FormUI; import fr.ird.observe.client.form.ObserveFormUIHandler; import fr.ird.observe.client.form.ObserveFormUIInitializerContext; -import fr.ird.observe.client.form.action.EditDataListFormUIAction; +import fr.ird.observe.client.form.action.FormUIActionHandler; import fr.ird.observe.client.form.spi.FormUIValidationMessageManager; import fr.ird.observe.client.form.spi.ReferentialReferencesFilter; import fr.ird.observe.client.form.spi.init.CoordinatesEditorInitializer; import fr.ird.observe.client.form.spi.init.TabInfoInitializer; import fr.ird.observe.client.form.table.longline.WeightMeasuresTableModel; -import fr.ird.observe.client.tree.navigation.NavigationTree; import fr.ird.observe.client.util.UIHelper; import fr.ird.observe.client.util.table.EditableTableModelSupport; import fr.ird.observe.client.util.table.InlineTableAutotSelectRowAndShowPopupAction; @@ -45,7 +45,6 @@ import fr.ird.observe.dto.data.seine.TargetCatchDto; import fr.ird.observe.dto.referential.SpeciesReference; import fr.ird.observe.dto.referential.seine.WeightCategoryReference; import fr.ird.observe.services.action.DataListDtoServiceAction; -import fr.ird.observe.services.action.LoadDataListDtoFormServiceAction; import fr.ird.observe.services.service.ObserveService; import java.awt.BorderLayout; import java.awt.Rectangle; @@ -91,29 +90,31 @@ public abstract class ObserveDataTableFormUIHandler<D extends DataDto, C extends private int oldIndex; protected final S service; - private final EditDataListFormUIAction<D, C, U> editAction; - private final LoadDataListDtoFormServiceAction<D, C> loadAction; - protected ObserveDataTableFormUIHandler(Class<S> serviceType) { - service = MAIN.getService(serviceType); - editAction = new EditDataListFormUIAction<D, C, U>() { + private final FormUIActionHandler editActionHandler = new FormUIActionHandler() { + @Override + public boolean before() { + return checkEdit(); + } - @Override - protected boolean askToSave(DataListDto<D, C> dto) { - return askToSave0(dto); - } + @Override + public void run() { + doSave0(model.getBean()); + } - @Override - protected void afterSave(DataListDto<D, C> dto, boolean created) { - afterSave0(dto, created); - } + @Override + public void after() { + afterSave0(); + } - @Override - protected void doSave(DataListDto<D, C> dto) { - doSave0(dto); - } - }; - loadAction = service; + @Override + public FormUI getUI() { + return ui; + } + }; + + protected ObserveDataTableFormUIHandler(Class<S> serviceType) { + service = MAIN.getService(serviceType); } @Override @@ -148,9 +149,9 @@ public abstract class ObserveDataTableFormUIHandler<D extends DataDto, C extends // public void computeUpdateMessages(ClientDataContext dataContext, FormUIValidationMessageManager validationManager) { // String message = n("observe.entity.message.updating"); // NavigationTreeNodeSupport node = navigation.getSelectedNode(); -// String entityLabel = ObserveI18nDecoratorHelper.getTypeI18nKey(node.getParent().getDataType()); +// String entityLabel = ObserveI18nDecoratorHelper.getTypeI18nKey(node.getParent().getBeanType()); // message = t(message, t(entityLabel)); -// validationManager.addInfoMessage(node.getParent().getDataType(), message); +// validationManager.addInfoMessage(node.getParent().getBeanType(), message); // } // // @Override @@ -211,7 +212,7 @@ public abstract class ObserveDataTableFormUIHandler<D extends DataDto, C extends @Override protected void initialize(ObserveFormUIInitializerContext<U> initializerContext) { - validationManager = new FormUIValidationMessageManager(model.getDataType(), ui); + validationManager = new FormUIValidationMessageManager(model.getBeanType(), ui); super.initialize(initializerContext); ContentTableModel<D, C> tableModel = ui.getTableModel(); @@ -336,9 +337,7 @@ public abstract class ObserveDataTableFormUIHandler<D extends DataDto, C extends tabModels.ifPresent(e -> TabInfoInitializer.onOpenUi(ui, e)); log.info(String.format("%s init ui", prefix)); - computeContentIcon(); updateToolbarActions(); - setTitle(navigation); updateExtra(); if (!model.isReadingMode()) { @@ -352,32 +351,21 @@ public abstract class ObserveDataTableFormUIHandler<D extends DataDto, C extends return getModel().getTableEditBean(); } + @Override public final void startEdit() { prepareValidationContext(); setEditing(); attachValidators(getBean()); } + @Override public final void stopEdit() { //FIXME!!! } - public final void restartEditUI() { - //FIXME!!! - } - - protected void setTitle(NavigationTree treeHelper) { - //FIXME!!! - } - - @Override - public U getUi() { - return ui; - } - @Override public void destroyUI() { - + //FIXME!!! } @Override @@ -392,7 +380,7 @@ public abstract class ObserveDataTableFormUIHandler<D extends DataDto, C extends @Override public final void saveEdit() { - editAction.save(ui, model.getBean()); + run(editActionHandler); // boolean ok = askToSave0(model.getSelectedParentId(), model.getBean()); // if (!ok) { // // use cancel save @@ -414,31 +402,23 @@ public abstract class ObserveDataTableFormUIHandler<D extends DataDto, C extends @Override public void deleteData() { -//FIXME!!! } protected void attachValidators(DataListDto<D, C> bean) { //FIXME!!! } - protected void updateExtra() { - } - private void doSave0(DataListDto<D, C> dto) { } - private void afterSave0(DataListDto<D, C> dto, boolean created) { + private void afterSave0() { SwingValidatorUtil.setValidatorChanged(ui, false); // on recharge l'écran resetEdit(); } - private boolean askToSave0(DataListDto<D, C> dto) { - return false; - } - public DataListDto<D, C> getBean() { return model.getBean(); } @@ -497,7 +477,7 @@ public abstract class ObserveDataTableFormUIHandler<D extends DataDto, C extends if (referentialListHeader != null) { List data = referentialListHeader.getData(); ClientValidationContext validationContext = ObserveClientApplicationContext.get().getValidationContext(); - log.debug(String.format("%s Set referentiel list [%s] in validation context : %d", prefix, getModel().getDataType().getSimpleName(), data.size())); + log.debug(String.format("%s Set referentiel list [%s] in validation context : %d", prefix, getModel().getBeanType().getSimpleName(), data.size())); validationContext.setEditingReferentielList(data); } } @@ -558,7 +538,7 @@ public abstract class ObserveDataTableFormUIHandler<D extends DataDto, C extends return model.getTableModel(); } - public void removeSelectedRow(int selectedRow) { + private void removeSelectedRow(int selectedRow) { try { getTableModel().doRemoveRow(selectedRow, false); } finally { @@ -636,11 +616,6 @@ public abstract class ObserveDataTableFormUIHandler<D extends DataDto, C extends } @Override - public int askUser(String t, String t1, int message, Object[] objects, int i) { - return askUser(t, t1, message, objects, i); - } - - @Override public boolean confirmForEntityDelete(Object o, Class<C> klass, C bean, String deleteExtraMessage) { return ObserveFormUIHandler.confirmForEntityDelete(klass, bean, deleteExtraMessage); } View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/458a9a10ad40a62cde69b42bc9ce... --- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/458a9a10ad40a62cde69b42bc9ce... You're receiving this email because of your account on gitlab.com.
participants (1)
-
Tony CHEMIT