Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe Commits: 1abcfeb2 by Tony CHEMIT at 2017-08-17T12:54:24+02:00 Trier les connexions sauevgardées (see #852) - - - - - 3726e998 by Tony CHEMIT at 2017-08-17T13:27:39+02:00 ajout raccourcis clavier (See #852) - - - - - 6 changed files: - client-configuration/src/main/java/fr/ird/observe/client/configuration/ClientConfig.java - client/src/main/java/fr/ird/observe/client/ui/actions/UIActionSupport.java - client/src/main/java/fr/ird/observe/client/ui/actions/storage/UseRemoteConfigurationUIAction.java - client/src/main/java/fr/ird/observe/client/ui/actions/storage/UseServerConfigurationUIAction.java - client/src/main/java/fr/ird/observe/client/ui/storage/presets/RemotePresetsUIHandler.java - client/src/main/java/fr/ird/observe/client/ui/storage/tabs/ConfigUIHandler.java Changes: ===================================== client-configuration/src/main/java/fr/ird/observe/client/configuration/ClientConfig.java ===================================== --- a/client-configuration/src/main/java/fr/ird/observe/client/configuration/ClientConfig.java +++ b/client-configuration/src/main/java/fr/ird/observe/client/configuration/ClientConfig.java @@ -38,6 +38,7 @@ import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Arrays; import java.util.Calendar; +import java.util.Comparator; import java.util.Date; import java.util.LinkedList; import java.util.List; @@ -417,32 +418,54 @@ public class ClientConfig extends GeneratedClientConfig { return option == null ? new RemoteDataSourceConfiguration[0] : new Gson().fromJson(option, RemoteDataSourceConfiguration[].class); } - public void addRemoteDataSourceConfiguration(RemoteDataSourceConfiguration remoteDataSourceConfiguration) { + public void addRemoteDataSourceConfiguration(RemoteDataSourceConfiguration configuration) { List<RemoteDataSourceConfiguration> remoteDataSourceConfigurations = new ArrayList<>(Arrays.asList(getRemoteDataSourceConfigurations())); - remoteDataSourceConfigurations.add(remoteDataSourceConfiguration); + remoteDataSourceConfigurations.add(configuration); setRemoteDataSourceConfigurations(remoteDataSourceConfigurations.toArray(new RemoteDataSourceConfiguration[remoteDataSourceConfigurations.size()])); saveForUser(); } - public void updateRemoteDataSourceConfiguration(RemoteDataSourceConfiguration remoteDataSourceConfiguration) { + public void updateRemoteDataSourceConfiguration(RemoteDataSourceConfiguration configuration) { List<RemoteDataSourceConfiguration> remoteDataSourceConfigurations = new ArrayList<>(Arrays.asList(getRemoteDataSourceConfigurations())); - remoteDataSourceConfigurations.remove(remoteDataSourceConfiguration); - remoteDataSourceConfigurations.add(remoteDataSourceConfiguration); + remoteDataSourceConfigurations.remove(configuration); + remoteDataSourceConfigurations.add(configuration); setRemoteDataSourceConfigurations(remoteDataSourceConfigurations.toArray(new RemoteDataSourceConfiguration[remoteDataSourceConfigurations.size()])); saveForUser(); } - public void removeRemoteDataSourceConfiguration(RemoteDataSourceConfiguration remoteDataSourceConfiguration) { + public void removeRemoteDataSourceConfiguration(RemoteDataSourceConfiguration configuration) { List<RemoteDataSourceConfiguration> remoteDataSourceConfigurations = new ArrayList<>(Arrays.asList(getRemoteDataSourceConfigurations())); - remoteDataSourceConfigurations.remove(remoteDataSourceConfiguration); + remoteDataSourceConfigurations.remove(configuration); setRemoteDataSourceConfigurations(remoteDataSourceConfigurations.toArray(new RemoteDataSourceConfiguration[remoteDataSourceConfigurations.size()])); saveForUser(); } @Override - public void setRemoteDataSourceConfigurations(RemoteDataSourceConfiguration[] remoteDataSourceConfigurations) { - String option = new Gson().toJson(remoteDataSourceConfigurations); + public void setRemoteDataSourceConfigurations(RemoteDataSourceConfiguration[] configurations) { + String option = new Gson().toJson(configurations); get().setOption(ClientConfigOption.REMOTE_DATA_SOURCE_CONFIGURATIONS.getKey(), option); + remoteDataSourceConfigurationList=null; + } + + ImmutableList<ServerDataSourceConfiguration> serverDataSourceConfigurationList; + ImmutableList<RemoteDataSourceConfiguration> remoteDataSourceConfigurationList; + + public ImmutableList<RemoteDataSourceConfiguration> getRemoteDataSourceConfigurationList() { + if (remoteDataSourceConfigurationList == null) { + List<RemoteDataSourceConfiguration> configurations = new ArrayList<>(Arrays.asList(getRemoteDataSourceConfigurations())); + configurations.sort(Comparator.comparing(RemoteDataSourceConfiguration::getName)); + remoteDataSourceConfigurationList = ImmutableList.copyOf(configurations); + } + return remoteDataSourceConfigurationList; + } + + public ImmutableList<ServerDataSourceConfiguration> getServerDataSourceConfigurationList() { + if (serverDataSourceConfigurationList == null) { + List<ServerDataSourceConfiguration> configurations = new ArrayList<>(Arrays.asList(getServerDataSourceConfigurations())); + configurations.sort(Comparator.comparing(ServerDataSourceConfiguration::getName)); + serverDataSourceConfigurationList = ImmutableList.copyOf(configurations); + } + return serverDataSourceConfigurationList; } @Override @@ -451,32 +474,33 @@ public class ClientConfig extends GeneratedClientConfig { return option == null ? new ServerDataSourceConfiguration[0] : new Gson().fromJson(option, ServerDataSourceConfiguration[].class); } - public void addServerDataSourceConfiguration(ServerDataSourceConfiguration remoteDataSourceConfiguration) { + public void addServerDataSourceConfiguration(ServerDataSourceConfiguration configuration) { List<ServerDataSourceConfiguration> remoteDataSourceConfigurations = new ArrayList<>(Arrays.asList(getServerDataSourceConfigurations())); - remoteDataSourceConfigurations.add(remoteDataSourceConfiguration); + remoteDataSourceConfigurations.add(configuration); setServerDataSourceConfigurations(remoteDataSourceConfigurations.toArray(new ServerDataSourceConfiguration[remoteDataSourceConfigurations.size()])); saveForUser(); } - public void updateServerDataSourceConfiguration(ServerDataSourceConfiguration remoteDataSourceConfiguration) { + public void updateServerDataSourceConfiguration(ServerDataSourceConfiguration configuration) { List<ServerDataSourceConfiguration> remoteDataSourceConfigurations = new ArrayList<>(Arrays.asList(getServerDataSourceConfigurations())); - remoteDataSourceConfigurations.remove(remoteDataSourceConfiguration); - remoteDataSourceConfigurations.add(remoteDataSourceConfiguration); + remoteDataSourceConfigurations.remove(configuration); + remoteDataSourceConfigurations.add(configuration); setServerDataSourceConfigurations(remoteDataSourceConfigurations.toArray(new ServerDataSourceConfiguration[remoteDataSourceConfigurations.size()])); saveForUser(); } - public void removeServerDataSourceConfiguration(ServerDataSourceConfiguration serverDataSourceConfiguration) { + public void removeServerDataSourceConfiguration(ServerDataSourceConfiguration configuration) { List<ServerDataSourceConfiguration> serverDataSourceConfigurations = new ArrayList<>(Arrays.asList(getServerDataSourceConfigurations())); - serverDataSourceConfigurations.remove(serverDataSourceConfiguration); + serverDataSourceConfigurations.remove(configuration); setServerDataSourceConfigurations(serverDataSourceConfigurations.toArray(new ServerDataSourceConfiguration[serverDataSourceConfigurations.size()])); saveForUser(); } @Override - public void setServerDataSourceConfigurations(ServerDataSourceConfiguration[] serverDataSourceConfigurations) { - String option = new Gson().toJson(serverDataSourceConfigurations); + public void setServerDataSourceConfigurations(ServerDataSourceConfiguration[] configurations) { + String option = new Gson().toJson(configurations); get().setOption(ClientConfigOption.SERVER_DATA_SOURCE_CONFIGURATIONS.getKey(), option); + serverDataSourceConfigurationList=null; } private final SimpleDateFormat dateFormat = new SimpleDateFormat(); ===================================== client/src/main/java/fr/ird/observe/client/ui/actions/UIActionSupport.java ===================================== --- a/client/src/main/java/fr/ird/observe/client/ui/actions/UIActionSupport.java +++ b/client/src/main/java/fr/ird/observe/client/ui/actions/UIActionSupport.java @@ -25,8 +25,8 @@ import fr.ird.observe.client.ObserveSwingApplicationContext; import fr.ird.observe.client.db.ObserveSwingDataSource; import fr.ird.observe.client.ui.ObserveKeyStrokes; import fr.ird.observe.client.ui.ObserveMainUI; -import fr.ird.observe.client.ui.util.UIHelper; import fr.ird.observe.client.ui.content.ContentUI; +import fr.ird.observe.client.ui.util.UIHelper; import fr.ird.observe.services.ObserveServicesProvider; import java.awt.event.ActionEvent; import java.awt.event.InputEvent; @@ -84,7 +84,7 @@ public abstract class UIActionSupport extends AbstractAction { return (KeyStroke) getValue(ACCELERATOR_KEY); } - protected String getActionCommandKey() { + public String getActionCommandKey() { return (String) getValue(ACTION_COMMAND_KEY); } @@ -110,7 +110,16 @@ public abstract class UIActionSupport extends AbstractAction { } public void initForMainUi(AbstractButton editor, InputMap inputMap, ActionMap actionMap) { + String text = editor.getText(); + String tip = editor.getToolTipText(); + editor.setAction(this); + if (text != null && editor.getText() == null) { + editor.setText(text); + } + if (tip != null && editor.getToolTipText() == null) { + editor.setToolTipText(tip); + } editor.putClientProperty(CLIENT_PROPERTY_UI, mainUI); //FIXME Attention on introduit un état dans l'action et si l'action est utilisée plusieurs fois dans un même écran //FIXME cela va introduire des effets de bord ===================================== client/src/main/java/fr/ird/observe/client/ui/actions/storage/UseRemoteConfigurationUIAction.java ===================================== --- a/client/src/main/java/fr/ird/observe/client/ui/actions/storage/UseRemoteConfigurationUIAction.java +++ b/client/src/main/java/fr/ird/observe/client/ui/actions/storage/UseRemoteConfigurationUIAction.java @@ -30,7 +30,8 @@ import fr.ird.observe.client.ui.storage.StorageUIModel; import fr.ird.observe.client.ui.storage.tabs.ConfigUI; import fr.ird.observe.services.dto.presets.RemoteDataSourceConfiguration; import java.awt.event.ActionEvent; -import javax.swing.AbstractButton; +import javax.swing.JMenuItem; +import javax.swing.KeyStroke; import javax.swing.SwingUtilities; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -48,20 +49,22 @@ public class UseRemoteConfigurationUIAction extends UIActionSupport { public static final String ACTION_NAME = UseRemoteConfigurationUIAction.class.getName(); - public UseRemoteConfigurationUIAction(ConfigUI mainUI) { - super(null, ACTION_NAME, null, null, "db-remote", null); - } + private final ConfigUI configUI; + private final RemoteDataSourceConfiguration configuration; + private StorageUI parentContainer; - public UseRemoteConfigurationUIAction(ObserveMainUI mainUI) { - super(mainUI, ACTION_NAME, null, null, "db-remote", null); + public UseRemoteConfigurationUIAction(ObserveMainUI mainUI, ConfigUI configUI, String actionName, RemoteDataSourceConfiguration configuration, KeyStroke acceleratorKey) { + super(mainUI, actionName, configuration.getName(), null, "db-remote", acceleratorKey); + this.configUI = configUI; + this.configuration = configuration; } @Override public void actionPerformed(ActionEvent e) { - AbstractButton value = (AbstractButton) getValue(EDITOR); - ConfigUI configUI = (ConfigUI) value.getClientProperty(CLIENT_PROPERTY_UI); - RemoteDataSourceConfiguration configuration = (RemoteDataSourceConfiguration) value.getClientProperty("configuration"); + if (!((JMenuItem)getEditor()).isArmed()) { + return; + } if (log.isInfoEnabled()) { log.info("Use remote configuration: " + configuration.getName()); @@ -74,7 +77,7 @@ public class UseRemoteConfigurationUIAction extends UIActionSupport { model.setUseSsl(configuration.isUseSsl()); configUI.getTestRemoteAction().requestFocusInWindow(); - StorageUI parentContainer = configUI.getParentContainer(StorageUI.class); + parentContainer = configUI.getParentContainer(StorageUI.class); SwingUtilities.invokeLater(() -> { configUI.getTestRemoteAction().doClick(); if (ConnexionStatus.SUCCESS == configUI.getModel().getConnexionStatus()) { ===================================== client/src/main/java/fr/ird/observe/client/ui/actions/storage/UseServerConfigurationUIAction.java ===================================== --- a/client/src/main/java/fr/ird/observe/client/ui/actions/storage/UseServerConfigurationUIAction.java +++ b/client/src/main/java/fr/ird/observe/client/ui/actions/storage/UseServerConfigurationUIAction.java @@ -30,7 +30,8 @@ import fr.ird.observe.client.ui.storage.StorageUIModel; import fr.ird.observe.client.ui.storage.tabs.ConfigUI; import fr.ird.observe.services.dto.presets.ServerDataSourceConfiguration; import java.awt.event.ActionEvent; -import javax.swing.AbstractButton; +import javax.swing.JMenuItem; +import javax.swing.KeyStroke; import javax.swing.SwingUtilities; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -47,21 +48,22 @@ public class UseServerConfigurationUIAction extends UIActionSupport { private static final Log log = LogFactory.getLog(UseServerConfigurationUIAction.class); public static final String ACTION_NAME = UseServerConfigurationUIAction.class.getName(); + private final ConfigUI configUI; + private final ServerDataSourceConfiguration configuration; + private StorageUI parentContainer; - public UseServerConfigurationUIAction(ConfigUI mainUI) { - super(null, ACTION_NAME, null, null, "db-server", null); - } - - public UseServerConfigurationUIAction(ObserveMainUI mainUI) { - super(mainUI, ACTION_NAME, null, null, "db-server", null); + public UseServerConfigurationUIAction(ObserveMainUI mainUI, ConfigUI configUI, String actionName, ServerDataSourceConfiguration configuration, KeyStroke acceleratorKey) { + super(mainUI, actionName, configuration.getName(), null, "db-remote", acceleratorKey); + this.configUI = configUI; + this.configuration = configuration; } @Override public void actionPerformed(ActionEvent e) { - AbstractButton value = (AbstractButton) getValue(EDITOR); - ConfigUI configUI = (ConfigUI) value.getClientProperty(CLIENT_PROPERTY_UI); - ServerDataSourceConfiguration configuration = (ServerDataSourceConfiguration) value.getClientProperty("configuration"); + if (!((JMenuItem) getEditor()).isArmed()) { + return; + } if (log.isInfoEnabled()) { log.info("Use server configuration: " + configuration.getName()); } @@ -73,7 +75,7 @@ public class UseServerConfigurationUIAction extends UIActionSupport { model.setRemotePassword(configuration.getPassword().toCharArray()); model.setServerDatabase(configuration.getDatabaseName()); - StorageUI parentContainer = configUI.getParentContainer(StorageUI.class); + parentContainer = configUI.getParentContainer(StorageUI.class); configUI.getTestRemoteAction().requestFocusInWindow(); SwingUtilities.invokeLater(() -> { ===================================== client/src/main/java/fr/ird/observe/client/ui/storage/presets/RemotePresetsUIHandler.java ===================================== --- a/client/src/main/java/fr/ird/observe/client/ui/storage/presets/RemotePresetsUIHandler.java +++ b/client/src/main/java/fr/ird/observe/client/ui/storage/presets/RemotePresetsUIHandler.java @@ -44,7 +44,6 @@ import java.awt.BorderLayout; import java.net.MalformedURLException; import java.net.URL; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; import javax.swing.JOptionPane; import javax.swing.JPanel; @@ -73,10 +72,8 @@ public class RemotePresetsUIHandler implements UIHandler<RemotePresetsUI> { this.ui = ui; RemotePresetsUIModel model = new RemotePresetsUIModel(); ClientConfig config = ObserveSwingApplicationContext.get().getConfig(); - List<ServerDataSourceConfiguration> serverDataSourceConfigurations = new ArrayList<>(Arrays.asList(config.getServerDataSourceConfigurations())); - model.setServerDataSourceConfigurations(serverDataSourceConfigurations); - List<RemoteDataSourceConfiguration> remoteDataSourceConfigurations = new ArrayList<>(Arrays.asList(config.getRemoteDataSourceConfigurations())); - model.setRemoteDataSourceConfigurations(remoteDataSourceConfigurations); + model.setServerDataSourceConfigurations(config.getServerDataSourceConfigurationList()); + model.setRemoteDataSourceConfigurations(config.getRemoteDataSourceConfigurationList()); ui.setContextValue(model); } ===================================== client/src/main/java/fr/ird/observe/client/ui/storage/tabs/ConfigUIHandler.java ===================================== --- a/client/src/main/java/fr/ird/observe/client/ui/storage/tabs/ConfigUIHandler.java +++ b/client/src/main/java/fr/ird/observe/client/ui/storage/tabs/ConfigUIHandler.java @@ -27,13 +27,14 @@ import fr.ird.observe.client.ObserveTextGenerator; import fr.ird.observe.client.constants.ConnexionStatus; import fr.ird.observe.client.constants.DbMode; import fr.ird.observe.client.ui.ObserveKeyStrokes; +import fr.ird.observe.client.ui.ObserveMainUI; import fr.ird.observe.client.ui.actions.UIActionSupport; -import fr.ird.observe.client.ui.util.UIHelper; import fr.ird.observe.client.ui.actions.storage.UseRemoteConfigurationUIAction; import fr.ird.observe.client.ui.actions.storage.UseServerConfigurationUIAction; import fr.ird.observe.client.ui.content.ObserveActionMap; import fr.ird.observe.client.ui.storage.StorageStep; import fr.ird.observe.client.ui.storage.StorageUIModel; +import fr.ird.observe.client.ui.util.UIHelper; import fr.ird.observe.services.dto.presets.RemoteDataSourceConfiguration; import fr.ird.observe.services.dto.presets.ServerDataSourceConfiguration; import java.awt.BorderLayout; @@ -132,34 +133,33 @@ public class ConfigUIHandler extends StorageTabUIHandler<ConfigUI> implements UI init(ui.getServerMenu()); init(ui.getRemoteMenu()); - for (RemoteDataSourceConfiguration configuration : ObserveSwingApplicationContext.get().getConfig().getRemoteDataSourceConfigurations()) { - addRemoteConfiguration(configuration); + int index = 1; + ObserveMainUI mainUI = ObserveSwingApplicationContext.get().getMainUI(); + for (RemoteDataSourceConfiguration configuration : ObserveSwingApplicationContext.get().getConfig().getRemoteDataSourceConfigurationList()) { + addRemoteConfiguration(mainUI,configuration, index++); } - for (ServerDataSourceConfiguration configuration : ObserveSwingApplicationContext.get().getConfig().getServerDataSourceConfigurations()) { - addServerConfiguration(configuration); + index = 1; + for (ServerDataSourceConfiguration configuration : ObserveSwingApplicationContext.get().getConfig().getServerDataSourceConfigurationList()) { + addServerConfiguration(mainUI,configuration, index++); } } - public void addRemoteConfiguration(RemoteDataSourceConfiguration configuration) { + public void addRemoteConfiguration(ObserveMainUI mainUI, RemoteDataSourceConfiguration configuration, int position) { JMenuItem item = new JMenuItem(configuration.getName()); item.putClientProperty("configuration", configuration); - item.putClientProperty("text", configuration.getName()); - item.putClientProperty("toolTipText", configuration.getName()); - item.putClientProperty(OBSERVE_ACTION, UseRemoteConfigurationUIAction.ACTION_NAME); - UIActionSupport action = init(item); - action.updateAction(ui, item); + UIActionSupport action = new UseRemoteConfigurationUIAction(mainUI,ui, UseRemoteConfigurationUIAction.ACTION_NAME + position, configuration, KeyStroke.getKeyStroke("F" + position)); + action.initForMainUi(item, ui.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT), observeActionMap); + ui.getRemoteMenu().add(item); } - public void addServerConfiguration(ServerDataSourceConfiguration configuration) { + public void addServerConfiguration(ObserveMainUI mainUI, ServerDataSourceConfiguration configuration, int position) { JMenuItem item = new JMenuItem(configuration.getName()); item.putClientProperty("configuration", configuration); - item.putClientProperty("text", configuration.getName()); - item.putClientProperty("toolTipText", configuration.getName()); - item.putClientProperty(OBSERVE_ACTION, UseServerConfigurationUIAction.ACTION_NAME); - UIActionSupport action = init(item); - action.updateAction(ui, item); + UIActionSupport action = new UseServerConfigurationUIAction(mainUI,ui, UseServerConfigurationUIAction.ACTION_NAME + position, configuration, KeyStroke.getKeyStroke("F" + position)); + action.initForMainUi(item, ui.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT), observeActionMap); + ui.getServerMenu().add(item); } View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/compare/6bca338ce3fe6324686a6c9a12d... --- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/compare/6bca338ce3fe6324686a6c9a12d... You're receiving this email because of your account on gitlab.com.