/*
* Copyright (C) 2006-2016 DLR, Germany
*
* All rights reserved
*
* http://www.rcenvironment.de/
*/
package de.rcenvironment.core.gui.cluster.configuration.internal;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.dialogs.ElementListSelectionDialog;
/**
* Dialog to manage connection configurations and select one to connect.
*
* @author Doreen Seider
*/
public class ClusterConnectionConfigurationSelectionDialog extends ElementListSelectionDialog {
protected static final int NEW = 2;
protected static final int EDIT = 3;
protected static final int DELETE = 4;
protected static final int CONNECT = 5;
private ClusterConnectionConfigurationDialogsController controller;
private Button editButton;
private Button deleteButton;
private Button connectButton;
private ClusterConnectionConfiguration selectedConfiguration;
private boolean hasInitialElements = false;
public ClusterConnectionConfigurationSelectionDialog(Shell parent, ClusterConnectionConfigurationDialogsController controller) {
super(parent, new LabelProvider());
setTitle(Messages.selectHostDialogTitle);
setMessage(Messages.selectHostDialogMessage);
ClusterConnectionConfiguration[] configurations = controller.getStoredClusterConnectionConfigurations();
setElements(configurations);
hasInitialElements = configurations.length > 0;
this.controller = controller;
}
@Override
protected void createButtonsForButtonBar(final Composite parent) {
Button newButton = createButton(parent, NEW, Messages.newButtonTitle, false);
newButton.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
controller.openNewClusterConnectionConfigurationDialog();
updateDialog();
}
});
editButton = createButton(parent, EDIT, Messages.editButtonTitle, false);
editButton.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
controller.openEditClusterConnectionConfigurationDialog((ClusterConnectionConfiguration) getSelectedElements()[0]);
updateDialog();
}
});
editButton.setEnabled(hasInitialElements);
deleteButton = createButton(parent, DELETE, Messages.deleteButtonTitle, false);
deleteButton.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
controller.openDeleteConfirmationDialog((ClusterConnectionConfiguration) getSelectedElements()[0]);
updateDialog();
}
});
deleteButton.setEnabled(hasInitialElements);
connectButton = createButton(parent, CONNECT, Messages.connectButtonTitle, true);
connectButton.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
setSelectedConfiguration();
setReturnCode(CONNECT);
close();
}
});
connectButton.setEnabled(hasInitialElements);
Button cancelButton = createButton(parent, CANCEL, Messages.cancelButtonTitle, false);
cancelButton.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
setReturnCode(CANCEL);
close();
}
});
}
@Override
protected boolean isResizable() {
return true;
}
@Override
protected void handleDefaultSelected() {
setSelectedConfiguration();
setReturnCode(CONNECT);
close();
}
@Override
protected void handleSelectionChanged() {
super.handleSelectionChanged();
setSelectedConfiguration();
updateButtons();
}
protected ClusterConnectionConfiguration getSelectedElement() {
return selectedConfiguration;
}
private void setSelectedConfiguration() {
if (getSelectedElements().length > 0) {
selectedConfiguration = (ClusterConnectionConfiguration) getSelectedElements()[0];
} else {
selectedConfiguration = null;
}
}
private void updateDialog() {
setListElements(controller.getStoredClusterConnectionConfigurations());
updateButtons();
}
private void updateButtons() {
ClusterConnectionConfiguration[] configurations = controller.getStoredClusterConnectionConfigurations();
setListElements(controller.getStoredClusterConnectionConfigurations());
boolean enabled = configurations.length > 0 && getSelectedElements().length > 0;
editButton.setEnabled(enabled);
deleteButton.setEnabled(enabled);
connectButton.setEnabled(enabled);
}
}