Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe

Commits:

6 changed files:

Changes:

  • client-configuration/src/main/java/fr/ird/observe/client/configuration/ClientConfig.java
    ... ... @@ -38,6 +38,7 @@ import java.text.SimpleDateFormat;
    38 38
     import java.util.ArrayList;
    
    39 39
     import java.util.Arrays;
    
    40 40
     import java.util.Calendar;
    
    41
    +import java.util.Comparator;
    
    41 42
     import java.util.Date;
    
    42 43
     import java.util.LinkedList;
    
    43 44
     import java.util.List;
    
    ... ... @@ -417,32 +418,54 @@ public class ClientConfig extends GeneratedClientConfig {
    417 418
             return option == null ? new RemoteDataSourceConfiguration[0] : new Gson().fromJson(option, RemoteDataSourceConfiguration[].class);
    
    418 419
         }
    
    419 420
     
    
    420
    -    public void addRemoteDataSourceConfiguration(RemoteDataSourceConfiguration remoteDataSourceConfiguration) {
    
    421
    +    public void addRemoteDataSourceConfiguration(RemoteDataSourceConfiguration configuration) {
    
    421 422
             List<RemoteDataSourceConfiguration> remoteDataSourceConfigurations = new ArrayList<>(Arrays.asList(getRemoteDataSourceConfigurations()));
    
    422
    -        remoteDataSourceConfigurations.add(remoteDataSourceConfiguration);
    
    423
    +        remoteDataSourceConfigurations.add(configuration);
    
    423 424
             setRemoteDataSourceConfigurations(remoteDataSourceConfigurations.toArray(new RemoteDataSourceConfiguration[remoteDataSourceConfigurations.size()]));
    
    424 425
             saveForUser();
    
    425 426
         }
    
    426 427
     
    
    427
    -    public void updateRemoteDataSourceConfiguration(RemoteDataSourceConfiguration remoteDataSourceConfiguration) {
    
    428
    +    public void updateRemoteDataSourceConfiguration(RemoteDataSourceConfiguration configuration) {
    
    428 429
             List<RemoteDataSourceConfiguration> remoteDataSourceConfigurations = new ArrayList<>(Arrays.asList(getRemoteDataSourceConfigurations()));
    
    429
    -        remoteDataSourceConfigurations.remove(remoteDataSourceConfiguration);
    
    430
    -        remoteDataSourceConfigurations.add(remoteDataSourceConfiguration);
    
    430
    +        remoteDataSourceConfigurations.remove(configuration);
    
    431
    +        remoteDataSourceConfigurations.add(configuration);
    
    431 432
             setRemoteDataSourceConfigurations(remoteDataSourceConfigurations.toArray(new RemoteDataSourceConfiguration[remoteDataSourceConfigurations.size()]));
    
    432 433
             saveForUser();
    
    433 434
         }
    
    434 435
     
    
    435
    -    public void removeRemoteDataSourceConfiguration(RemoteDataSourceConfiguration remoteDataSourceConfiguration) {
    
    436
    +    public void removeRemoteDataSourceConfiguration(RemoteDataSourceConfiguration configuration) {
    
    436 437
             List<RemoteDataSourceConfiguration> remoteDataSourceConfigurations = new ArrayList<>(Arrays.asList(getRemoteDataSourceConfigurations()));
    
    437
    -        remoteDataSourceConfigurations.remove(remoteDataSourceConfiguration);
    
    438
    +        remoteDataSourceConfigurations.remove(configuration);
    
    438 439
             setRemoteDataSourceConfigurations(remoteDataSourceConfigurations.toArray(new RemoteDataSourceConfiguration[remoteDataSourceConfigurations.size()]));
    
    439 440
             saveForUser();
    
    440 441
         }
    
    441 442
     
    
    442 443
         @Override
    
    443
    -    public void setRemoteDataSourceConfigurations(RemoteDataSourceConfiguration[] remoteDataSourceConfigurations) {
    
    444
    -        String option = new Gson().toJson(remoteDataSourceConfigurations);
    
    444
    +    public void setRemoteDataSourceConfigurations(RemoteDataSourceConfiguration[] configurations) {
    
    445
    +        String option = new Gson().toJson(configurations);
    
    445 446
             get().setOption(ClientConfigOption.REMOTE_DATA_SOURCE_CONFIGURATIONS.getKey(), option);
    
    447
    +        remoteDataSourceConfigurationList=null;
    
    448
    +    }
    
    449
    +
    
    450
    +    ImmutableList<ServerDataSourceConfiguration> serverDataSourceConfigurationList;
    
    451
    +    ImmutableList<RemoteDataSourceConfiguration> remoteDataSourceConfigurationList;
    
    452
    +
    
    453
    +    public ImmutableList<RemoteDataSourceConfiguration> getRemoteDataSourceConfigurationList() {
    
    454
    +        if (remoteDataSourceConfigurationList == null) {
    
    455
    +            List<RemoteDataSourceConfiguration> configurations = new ArrayList<>(Arrays.asList(getRemoteDataSourceConfigurations()));
    
    456
    +            configurations.sort(Comparator.comparing(RemoteDataSourceConfiguration::getName));
    
    457
    +            remoteDataSourceConfigurationList = ImmutableList.copyOf(configurations);
    
    458
    +        }
    
    459
    +        return remoteDataSourceConfigurationList;
    
    460
    +    }
    
    461
    +
    
    462
    +    public ImmutableList<ServerDataSourceConfiguration> getServerDataSourceConfigurationList() {
    
    463
    +        if (serverDataSourceConfigurationList == null) {
    
    464
    +            List<ServerDataSourceConfiguration> configurations = new ArrayList<>(Arrays.asList(getServerDataSourceConfigurations()));
    
    465
    +            configurations.sort(Comparator.comparing(ServerDataSourceConfiguration::getName));
    
    466
    +            serverDataSourceConfigurationList = ImmutableList.copyOf(configurations);
    
    467
    +        }
    
    468
    +        return serverDataSourceConfigurationList;
    
    446 469
         }
    
    447 470
     
    
    448 471
         @Override
    
    ... ... @@ -451,32 +474,33 @@ public class ClientConfig extends GeneratedClientConfig {
    451 474
             return option == null ? new ServerDataSourceConfiguration[0] : new Gson().fromJson(option, ServerDataSourceConfiguration[].class);
    
    452 475
         }
    
    453 476
     
    
    454
    -    public void addServerDataSourceConfiguration(ServerDataSourceConfiguration remoteDataSourceConfiguration) {
    
    477
    +    public void addServerDataSourceConfiguration(ServerDataSourceConfiguration configuration) {
    
    455 478
             List<ServerDataSourceConfiguration> remoteDataSourceConfigurations = new ArrayList<>(Arrays.asList(getServerDataSourceConfigurations()));
    
    456
    -        remoteDataSourceConfigurations.add(remoteDataSourceConfiguration);
    
    479
    +        remoteDataSourceConfigurations.add(configuration);
    
    457 480
             setServerDataSourceConfigurations(remoteDataSourceConfigurations.toArray(new ServerDataSourceConfiguration[remoteDataSourceConfigurations.size()]));
    
    458 481
             saveForUser();
    
    459 482
         }
    
    460 483
     
    
    461
    -    public void updateServerDataSourceConfiguration(ServerDataSourceConfiguration remoteDataSourceConfiguration) {
    
    484
    +    public void updateServerDataSourceConfiguration(ServerDataSourceConfiguration configuration) {
    
    462 485
             List<ServerDataSourceConfiguration> remoteDataSourceConfigurations = new ArrayList<>(Arrays.asList(getServerDataSourceConfigurations()));
    
    463
    -        remoteDataSourceConfigurations.remove(remoteDataSourceConfiguration);
    
    464
    -        remoteDataSourceConfigurations.add(remoteDataSourceConfiguration);
    
    486
    +        remoteDataSourceConfigurations.remove(configuration);
    
    487
    +        remoteDataSourceConfigurations.add(configuration);
    
    465 488
             setServerDataSourceConfigurations(remoteDataSourceConfigurations.toArray(new ServerDataSourceConfiguration[remoteDataSourceConfigurations.size()]));
    
    466 489
             saveForUser();
    
    467 490
         }
    
    468 491
     
    
    469
    -    public void removeServerDataSourceConfiguration(ServerDataSourceConfiguration serverDataSourceConfiguration) {
    
    492
    +    public void removeServerDataSourceConfiguration(ServerDataSourceConfiguration configuration) {
    
    470 493
             List<ServerDataSourceConfiguration> serverDataSourceConfigurations = new ArrayList<>(Arrays.asList(getServerDataSourceConfigurations()));
    
    471
    -        serverDataSourceConfigurations.remove(serverDataSourceConfiguration);
    
    494
    +        serverDataSourceConfigurations.remove(configuration);
    
    472 495
             setServerDataSourceConfigurations(serverDataSourceConfigurations.toArray(new ServerDataSourceConfiguration[serverDataSourceConfigurations.size()]));
    
    473 496
             saveForUser();
    
    474 497
         }
    
    475 498
     
    
    476 499
         @Override
    
    477
    -    public void setServerDataSourceConfigurations(ServerDataSourceConfiguration[] serverDataSourceConfigurations) {
    
    478
    -        String option = new Gson().toJson(serverDataSourceConfigurations);
    
    500
    +    public void setServerDataSourceConfigurations(ServerDataSourceConfiguration[] configurations) {
    
    501
    +        String option = new Gson().toJson(configurations);
    
    479 502
             get().setOption(ClientConfigOption.SERVER_DATA_SOURCE_CONFIGURATIONS.getKey(), option);
    
    503
    +        serverDataSourceConfigurationList=null;
    
    480 504
         }
    
    481 505
     
    
    482 506
         private final SimpleDateFormat dateFormat = new SimpleDateFormat();
    

  • client/src/main/java/fr/ird/observe/client/ui/actions/UIActionSupport.java
    ... ... @@ -25,8 +25,8 @@ import fr.ird.observe.client.ObserveSwingApplicationContext;
    25 25
     import fr.ird.observe.client.db.ObserveSwingDataSource;
    
    26 26
     import fr.ird.observe.client.ui.ObserveKeyStrokes;
    
    27 27
     import fr.ird.observe.client.ui.ObserveMainUI;
    
    28
    -import fr.ird.observe.client.ui.util.UIHelper;
    
    29 28
     import fr.ird.observe.client.ui.content.ContentUI;
    
    29
    +import fr.ird.observe.client.ui.util.UIHelper;
    
    30 30
     import fr.ird.observe.services.ObserveServicesProvider;
    
    31 31
     import java.awt.event.ActionEvent;
    
    32 32
     import java.awt.event.InputEvent;
    
    ... ... @@ -84,7 +84,7 @@ public abstract class UIActionSupport extends AbstractAction {
    84 84
             return (KeyStroke) getValue(ACCELERATOR_KEY);
    
    85 85
         }
    
    86 86
     
    
    87
    -    protected String getActionCommandKey() {
    
    87
    +    public String getActionCommandKey() {
    
    88 88
             return (String) getValue(ACTION_COMMAND_KEY);
    
    89 89
         }
    
    90 90
     
    
    ... ... @@ -110,7 +110,16 @@ public abstract class UIActionSupport extends AbstractAction {
    110 110
         }
    
    111 111
     
    
    112 112
         public void initForMainUi(AbstractButton editor, InputMap inputMap, ActionMap actionMap) {
    
    113
    +        String text = editor.getText();
    
    114
    +        String tip = editor.getToolTipText();
    
    115
    +
    
    113 116
             editor.setAction(this);
    
    117
    +        if (text != null && editor.getText() == null) {
    
    118
    +            editor.setText(text);
    
    119
    +        }
    
    120
    +        if (tip != null && editor.getToolTipText() == null) {
    
    121
    +            editor.setToolTipText(tip);
    
    122
    +        }
    
    114 123
             editor.putClientProperty(CLIENT_PROPERTY_UI, mainUI);
    
    115 124
             //FIXME Attention on introduit un état dans l'action et si l'action est utilisée plusieurs fois dans un même écran
    
    116 125
             //FIXME cela va introduire des effets de bord
    

  • 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;
    30 30
     import fr.ird.observe.client.ui.storage.tabs.ConfigUI;
    
    31 31
     import fr.ird.observe.services.dto.presets.RemoteDataSourceConfiguration;
    
    32 32
     import java.awt.event.ActionEvent;
    
    33
    -import javax.swing.AbstractButton;
    
    33
    +import javax.swing.JMenuItem;
    
    34
    +import javax.swing.KeyStroke;
    
    34 35
     import javax.swing.SwingUtilities;
    
    35 36
     import org.apache.commons.logging.Log;
    
    36 37
     import org.apache.commons.logging.LogFactory;
    
    ... ... @@ -48,20 +49,22 @@ public class UseRemoteConfigurationUIAction extends UIActionSupport {
    48 49
     
    
    49 50
         public static final String ACTION_NAME = UseRemoteConfigurationUIAction.class.getName();
    
    50 51
     
    
    51
    -    public UseRemoteConfigurationUIAction(ConfigUI mainUI) {
    
    52
    -        super(null, ACTION_NAME, null, null, "db-remote", null);
    
    53
    -    }
    
    52
    +    private final ConfigUI configUI;
    
    53
    +    private final RemoteDataSourceConfiguration configuration;
    
    54
    +    private StorageUI parentContainer;
    
    54 55
     
    
    55
    -    public UseRemoteConfigurationUIAction(ObserveMainUI mainUI) {
    
    56
    -        super(mainUI, ACTION_NAME, null, null, "db-remote", null);
    
    56
    +    public UseRemoteConfigurationUIAction(ObserveMainUI mainUI, ConfigUI configUI, String actionName, RemoteDataSourceConfiguration configuration, KeyStroke acceleratorKey) {
    
    57
    +        super(mainUI, actionName, configuration.getName(), null, "db-remote", acceleratorKey);
    
    58
    +        this.configUI = configUI;
    
    59
    +        this.configuration = configuration;
    
    57 60
         }
    
    58 61
     
    
    59 62
         @Override
    
    60 63
         public void actionPerformed(ActionEvent e) {
    
    61 64
     
    
    62
    -        AbstractButton value = (AbstractButton) getValue(EDITOR);
    
    63
    -        ConfigUI configUI = (ConfigUI) value.getClientProperty(CLIENT_PROPERTY_UI);
    
    64
    -        RemoteDataSourceConfiguration configuration = (RemoteDataSourceConfiguration) value.getClientProperty("configuration");
    
    65
    +        if (!((JMenuItem)getEditor()).isArmed()) {
    
    66
    +            return;
    
    67
    +        }
    
    65 68
     
    
    66 69
             if (log.isInfoEnabled()) {
    
    67 70
                 log.info("Use remote configuration: " + configuration.getName());
    
    ... ... @@ -74,7 +77,7 @@ public class UseRemoteConfigurationUIAction extends UIActionSupport {
    74 77
             model.setUseSsl(configuration.isUseSsl());
    
    75 78
     
    
    76 79
             configUI.getTestRemoteAction().requestFocusInWindow();
    
    77
    -        StorageUI parentContainer = configUI.getParentContainer(StorageUI.class);
    
    80
    +        parentContainer = configUI.getParentContainer(StorageUI.class);
    
    78 81
             SwingUtilities.invokeLater(() -> {
    
    79 82
                 configUI.getTestRemoteAction().doClick();
    
    80 83
                 if (ConnexionStatus.SUCCESS == configUI.getModel().getConnexionStatus()) {
    

  • 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;
    30 30
     import fr.ird.observe.client.ui.storage.tabs.ConfigUI;
    
    31 31
     import fr.ird.observe.services.dto.presets.ServerDataSourceConfiguration;
    
    32 32
     import java.awt.event.ActionEvent;
    
    33
    -import javax.swing.AbstractButton;
    
    33
    +import javax.swing.JMenuItem;
    
    34
    +import javax.swing.KeyStroke;
    
    34 35
     import javax.swing.SwingUtilities;
    
    35 36
     import org.apache.commons.logging.Log;
    
    36 37
     import org.apache.commons.logging.LogFactory;
    
    ... ... @@ -47,21 +48,22 @@ public class UseServerConfigurationUIAction extends UIActionSupport {
    47 48
         private static final Log log = LogFactory.getLog(UseServerConfigurationUIAction.class);
    
    48 49
     
    
    49 50
         public static final String ACTION_NAME = UseServerConfigurationUIAction.class.getName();
    
    51
    +    private final ConfigUI configUI;
    
    52
    +    private final ServerDataSourceConfiguration configuration;
    
    53
    +    private StorageUI parentContainer;
    
    50 54
     
    
    51
    -    public UseServerConfigurationUIAction(ConfigUI mainUI) {
    
    52
    -        super(null, ACTION_NAME, null, null, "db-server", null);
    
    53
    -    }
    
    54
    -
    
    55
    -    public UseServerConfigurationUIAction(ObserveMainUI mainUI) {
    
    56
    -        super(mainUI, ACTION_NAME, null, null, "db-server", null);
    
    55
    +    public UseServerConfigurationUIAction(ObserveMainUI mainUI, ConfigUI configUI, String actionName, ServerDataSourceConfiguration configuration, KeyStroke acceleratorKey) {
    
    56
    +        super(mainUI, actionName, configuration.getName(), null, "db-remote", acceleratorKey);
    
    57
    +        this.configUI = configUI;
    
    58
    +        this.configuration = configuration;
    
    57 59
         }
    
    58 60
     
    
    59 61
         @Override
    
    60 62
         public void actionPerformed(ActionEvent e) {
    
    61 63
     
    
    62
    -        AbstractButton value = (AbstractButton) getValue(EDITOR);
    
    63
    -        ConfigUI configUI = (ConfigUI) value.getClientProperty(CLIENT_PROPERTY_UI);
    
    64
    -        ServerDataSourceConfiguration configuration = (ServerDataSourceConfiguration) value.getClientProperty("configuration");
    
    64
    +        if (!((JMenuItem) getEditor()).isArmed()) {
    
    65
    +            return;
    
    66
    +        }
    
    65 67
             if (log.isInfoEnabled()) {
    
    66 68
                 log.info("Use server configuration: " + configuration.getName());
    
    67 69
             }
    
    ... ... @@ -73,7 +75,7 @@ public class UseServerConfigurationUIAction extends UIActionSupport {
    73 75
             model.setRemotePassword(configuration.getPassword().toCharArray());
    
    74 76
             model.setServerDatabase(configuration.getDatabaseName());
    
    75 77
     
    
    76
    -        StorageUI parentContainer = configUI.getParentContainer(StorageUI.class);
    
    78
    +        parentContainer = configUI.getParentContainer(StorageUI.class);
    
    77 79
             configUI.getTestRemoteAction().requestFocusInWindow();
    
    78 80
     
    
    79 81
             SwingUtilities.invokeLater(() -> {
    

  • client/src/main/java/fr/ird/observe/client/ui/storage/presets/RemotePresetsUIHandler.java
    ... ... @@ -44,7 +44,6 @@ import java.awt.BorderLayout;
    44 44
     import java.net.MalformedURLException;
    
    45 45
     import java.net.URL;
    
    46 46
     import java.util.ArrayList;
    
    47
    -import java.util.Arrays;
    
    48 47
     import java.util.List;
    
    49 48
     import javax.swing.JOptionPane;
    
    50 49
     import javax.swing.JPanel;
    
    ... ... @@ -73,10 +72,8 @@ public class RemotePresetsUIHandler implements UIHandler<RemotePresetsUI> {
    73 72
             this.ui = ui;
    
    74 73
             RemotePresetsUIModel model = new RemotePresetsUIModel();
    
    75 74
             ClientConfig config = ObserveSwingApplicationContext.get().getConfig();
    
    76
    -        List<ServerDataSourceConfiguration> serverDataSourceConfigurations = new ArrayList<>(Arrays.asList(config.getServerDataSourceConfigurations()));
    
    77
    -        model.setServerDataSourceConfigurations(serverDataSourceConfigurations);
    
    78
    -        List<RemoteDataSourceConfiguration> remoteDataSourceConfigurations = new ArrayList<>(Arrays.asList(config.getRemoteDataSourceConfigurations()));
    
    79
    -        model.setRemoteDataSourceConfigurations(remoteDataSourceConfigurations);
    
    75
    +        model.setServerDataSourceConfigurations(config.getServerDataSourceConfigurationList());
    
    76
    +        model.setRemoteDataSourceConfigurations(config.getRemoteDataSourceConfigurationList());
    
    80 77
             ui.setContextValue(model);
    
    81 78
         }
    
    82 79
     
    

  • client/src/main/java/fr/ird/observe/client/ui/storage/tabs/ConfigUIHandler.java
    ... ... @@ -27,13 +27,14 @@ import fr.ird.observe.client.ObserveTextGenerator;
    27 27
     import fr.ird.observe.client.constants.ConnexionStatus;
    
    28 28
     import fr.ird.observe.client.constants.DbMode;
    
    29 29
     import fr.ird.observe.client.ui.ObserveKeyStrokes;
    
    30
    +import fr.ird.observe.client.ui.ObserveMainUI;
    
    30 31
     import fr.ird.observe.client.ui.actions.UIActionSupport;
    
    31
    -import fr.ird.observe.client.ui.util.UIHelper;
    
    32 32
     import fr.ird.observe.client.ui.actions.storage.UseRemoteConfigurationUIAction;
    
    33 33
     import fr.ird.observe.client.ui.actions.storage.UseServerConfigurationUIAction;
    
    34 34
     import fr.ird.observe.client.ui.content.ObserveActionMap;
    
    35 35
     import fr.ird.observe.client.ui.storage.StorageStep;
    
    36 36
     import fr.ird.observe.client.ui.storage.StorageUIModel;
    
    37
    +import fr.ird.observe.client.ui.util.UIHelper;
    
    37 38
     import fr.ird.observe.services.dto.presets.RemoteDataSourceConfiguration;
    
    38 39
     import fr.ird.observe.services.dto.presets.ServerDataSourceConfiguration;
    
    39 40
     import java.awt.BorderLayout;
    
    ... ... @@ -132,34 +133,33 @@ public class ConfigUIHandler extends StorageTabUIHandler<ConfigUI> implements UI
    132 133
             init(ui.getServerMenu());
    
    133 134
             init(ui.getRemoteMenu());
    
    134 135
     
    
    135
    -        for (RemoteDataSourceConfiguration configuration : ObserveSwingApplicationContext.get().getConfig().getRemoteDataSourceConfigurations()) {
    
    136
    -            addRemoteConfiguration(configuration);
    
    136
    +        int index = 1;
    
    137
    +        ObserveMainUI mainUI = ObserveSwingApplicationContext.get().getMainUI();
    
    138
    +        for (RemoteDataSourceConfiguration configuration : ObserveSwingApplicationContext.get().getConfig().getRemoteDataSourceConfigurationList()) {
    
    139
    +            addRemoteConfiguration(mainUI,configuration, index++);
    
    137 140
             }
    
    138 141
     
    
    139
    -        for (ServerDataSourceConfiguration configuration : ObserveSwingApplicationContext.get().getConfig().getServerDataSourceConfigurations()) {
    
    140
    -            addServerConfiguration(configuration);
    
    142
    +        index = 1;
    
    143
    +        for (ServerDataSourceConfiguration configuration : ObserveSwingApplicationContext.get().getConfig().getServerDataSourceConfigurationList()) {
    
    144
    +            addServerConfiguration(mainUI,configuration, index++);
    
    141 145
             }
    
    142 146
         }
    
    143 147
     
    
    144
    -    public void addRemoteConfiguration(RemoteDataSourceConfiguration configuration) {
    
    148
    +    public void addRemoteConfiguration(ObserveMainUI mainUI, RemoteDataSourceConfiguration configuration, int position) {
    
    145 149
             JMenuItem item = new JMenuItem(configuration.getName());
    
    146 150
             item.putClientProperty("configuration", configuration);
    
    147
    -        item.putClientProperty("text", configuration.getName());
    
    148
    -        item.putClientProperty("toolTipText", configuration.getName());
    
    149
    -        item.putClientProperty(OBSERVE_ACTION, UseRemoteConfigurationUIAction.ACTION_NAME);
    
    150
    -        UIActionSupport action = init(item);
    
    151
    -        action.updateAction(ui, item);
    
    151
    +        UIActionSupport action = new UseRemoteConfigurationUIAction(mainUI,ui, UseRemoteConfigurationUIAction.ACTION_NAME + position, configuration, KeyStroke.getKeyStroke("F" + position));
    
    152
    +        action.initForMainUi(item, ui.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT), observeActionMap);
    
    153
    +
    
    152 154
             ui.getRemoteMenu().add(item);
    
    153 155
         }
    
    154 156
     
    
    155
    -    public void addServerConfiguration(ServerDataSourceConfiguration configuration) {
    
    157
    +    public void addServerConfiguration(ObserveMainUI mainUI, ServerDataSourceConfiguration configuration, int position) {
    
    156 158
             JMenuItem item = new JMenuItem(configuration.getName());
    
    157 159
             item.putClientProperty("configuration", configuration);
    
    158
    -        item.putClientProperty("text", configuration.getName());
    
    159
    -        item.putClientProperty("toolTipText", configuration.getName());
    
    160
    -        item.putClientProperty(OBSERVE_ACTION, UseServerConfigurationUIAction.ACTION_NAME);
    
    161
    -        UIActionSupport action = init(item);
    
    162
    -        action.updateAction(ui, item);
    
    160
    +        UIActionSupport action = new UseServerConfigurationUIAction(mainUI,ui, UseServerConfigurationUIAction.ACTION_NAME + position, configuration, KeyStroke.getKeyStroke("F" + position));
    
    161
    +        action.initForMainUi(item, ui.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT), observeActionMap);
    
    162
    +
    
    163 163
             ui.getServerMenu().add(item);
    
    164 164
         }
    
    165 165