package org.insightech.er.editor.view.dialog.option.tab; import org.eclipse.swt.SWT; import org.eclipse.swt.events.ModifyEvent; import org.eclipse.swt.events.ModifyListener; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.List; import org.eclipse.swt.widgets.TabFolder; import org.eclipse.swt.widgets.Text; import org.insightech.er.ResourceString; import org.insightech.er.Resources; import org.insightech.er.common.exception.InputException; import org.insightech.er.common.widgets.ValidatableTabWrapper; import org.insightech.er.editor.model.settings.Environment; import org.insightech.er.editor.model.settings.Settings; import org.insightech.er.editor.view.dialog.option.OptionSettingDialog; import org.insightech.er.util.Check; public class EnvironmentTabWrapper extends ValidatableTabWrapper { private List environmentList; private Text nameText; private Button addButton; private Button editButton; private Button deleteButton; private Settings settings; private static final int LIST_HEIGHT = 230; public EnvironmentTabWrapper(OptionSettingDialog dialog, TabFolder parent, int style, Settings settings) { super(dialog, parent, style, "label.tablespace.environment"); this.settings = settings; this.init(); } @Override public void initComposite() { GridLayout layout = new GridLayout(); layout.numColumns = 3; this.setLayout(layout); this.createEnvironmentGroup(this); GridData gridData = new GridData(); gridData.widthHint = 200; gridData.horizontalSpan = 3; this.nameText = new Text(this, SWT.BORDER); this.nameText.setLayoutData(gridData); GridData buttonGridData = new GridData(); buttonGridData.widthHint = Resources.BUTTON_WIDTH; this.addButton = new Button(this, SWT.NONE); this.addButton.setLayoutData(buttonGridData); this.addButton.setText(ResourceString .getResourceString("label.button.add")); this.editButton = new Button(this, SWT.NONE); this.editButton.setLayoutData(buttonGridData); this.editButton.setText(ResourceString .getResourceString("label.button.edit")); this.deleteButton = new Button(this, SWT.NONE); this.deleteButton.setLayoutData(buttonGridData); this.deleteButton.setText(ResourceString .getResourceString("label.button.delete")); this.buttonEnabled(false); this.addButton.setEnabled(false); } private void createEnvironmentGroup(Composite parent) { GridData gridData = new GridData(); gridData.widthHint = 200; gridData.horizontalSpan = 3; gridData.heightHint = LIST_HEIGHT; this.environmentList = new List(parent, SWT.BORDER | SWT.V_SCROLL); this.environmentList.setLayoutData(gridData); } @Override protected void addListener() { this.environmentList.addSelectionListener(new SelectionAdapter() { /** * {@inheritDoc} */ @Override public void widgetSelected(SelectionEvent e) { int targetIndex = environmentList.getSelectionIndex(); if (targetIndex == -1) { return; } Environment environment = settings.getEnvironmentSetting() .getEnvironments().get(targetIndex); nameText.setText(environment.getName()); buttonEnabled(true); } }); this.addButton.addSelectionListener(new SelectionAdapter() { /** * {@inheritDoc} */ @Override public void widgetSelected(SelectionEvent e) { String name = nameText.getText().trim(); if (!Check.isEmpty(name)) { settings.getEnvironmentSetting().getEnvironments().add( new Environment(name)); setData(); environmentList.select(environmentList.getItemCount() - 1); } } }); this.editButton.addSelectionListener(new SelectionAdapter() { /** * {@inheritDoc} */ @Override public void widgetSelected(SelectionEvent e) { int targetIndex = environmentList.getSelectionIndex(); if (targetIndex == -1) { return; } String name = nameText.getText().trim(); if (!Check.isEmpty(name)) { Environment environment = settings.getEnvironmentSetting() .getEnvironments().get(targetIndex); environment.setName(name); setData(); environmentList.select(targetIndex); } } }); this.deleteButton.addSelectionListener(new SelectionAdapter() { /** * {@inheritDoc} */ @Override public void widgetSelected(SelectionEvent e) { int targetIndex = environmentList.getSelectionIndex(); if (targetIndex == -1) { return; } settings.getEnvironmentSetting().getEnvironments().remove( targetIndex); setData(); if (settings.getEnvironmentSetting().getEnvironments().size() > targetIndex) { environmentList.select(targetIndex); Environment environment = settings.getEnvironmentSetting() .getEnvironments().get(targetIndex); nameText.setText(environment.getName()); } else { nameText.setText(""); buttonEnabled(false); } } }); this.nameText.addModifyListener(new ModifyListener() { public void modifyText(ModifyEvent e) { String name = nameText.getText().trim(); if (name.length() == 0) { addButton.setEnabled(false); editButton.setEnabled(false); } else { addButton.setEnabled(true); if (environmentList.getSelectionIndex() != -1) { editButton.setEnabled(true); } else { editButton.setEnabled(false); } } } }); } private void buttonEnabled(boolean enabled) { this.editButton.setEnabled(enabled); if (environmentList.getItemCount() <= 1) { enabled = false; } this.deleteButton.setEnabled(enabled); } /** * {@inheritDoc} */ @Override public void validatePage() throws InputException { } @Override public void setInitFocus() { this.environmentList.setFocus(); } /** * {@inheritDoc} */ @Override protected void setData() { super.setData(); this.environmentList.removeAll(); for (Environment environment : this.settings.getEnvironmentSetting() .getEnvironments()) { this.environmentList.add(environment.getName()); } } @Override public void perfomeOK() { } }