package org.insightech.er.editor.view.dialog.outline.tablespace; import java.util.List; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.widgets.Combo; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Text; import org.eclipse.ui.PlatformUI; import org.insightech.er.Resources; import org.insightech.er.common.dialog.AbstractDialog; import org.insightech.er.common.widgets.CompositeFactory; import org.insightech.er.editor.model.ERDiagram; import org.insightech.er.editor.model.diagram_contents.not_element.tablespace.Tablespace; import org.insightech.er.editor.model.diagram_contents.not_element.tablespace.TablespaceProperties; import org.insightech.er.editor.model.settings.Environment; import org.insightech.er.util.Check; public abstract class TablespaceDialog extends AbstractDialog { private Combo environmentCombo; private Text nameText; private Tablespace result; protected ERDiagram diagram; private Environment currentEnvironment; protected static final int NUM_TEXT_WIDTH = 60; public TablespaceDialog() { this(2); } public TablespaceDialog(int numColumns) { super(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), numColumns); } public void init(Tablespace tablespace, ERDiagram diagram) { if (tablespace == null) { this.result = new Tablespace(); } else { this.result = tablespace.clone(); } this.diagram = diagram; } @Override protected void initialize(Composite composite) { this.environmentCombo = CompositeFactory.createReadOnlyCombo(this, composite, "label.tablespace.environment", this.getNumColumns() - 1, -1); this.nameText = CompositeFactory.createText(this, composite, "label.tablespace.name", this.getNumColumns() - 1, Resources.DESCRIPTION_WIDTH, false); } @Override protected String getErrorMessage() { String text = this.nameText.getText().trim(); if (text.equals("")) { return "error.tablespace.name.empty"; } if (!Check.isAlphabet(text)) { return "error.tablespace.name.not.alphabet"; } return null; } @Override protected String getTitle() { return "dialog.title.tablespace"; } @Override protected void perfomeOK() { this.result.setName(this.nameText.getText().trim()); TablespaceProperties tablespaceProperties = this .setTablespaceProperties(); this.result .putProperties(this.currentEnvironment, tablespaceProperties); } protected abstract TablespaceProperties setTablespaceProperties(); @Override protected void setData() { List<Environment> environmentList = this.diagram.getDiagramContents() .getSettings().getEnvironmentSetting().getEnvironments(); for (Environment environment : environmentList) { this.environmentCombo.add(environment.getName()); } this.environmentCombo.select(0); this.currentEnvironment = environmentList.get(0); if (this.result.getName() != null) { this.nameText.setText(this.result.getName()); } this.setPropertiesData(); } private void setPropertiesData() { this.currentEnvironment = this.getSelectedEnvironment(); TablespaceProperties tablespaceProperties = this.result.getProperties( this.currentEnvironment, this.diagram); this.setData(tablespaceProperties); } protected abstract void setData(TablespaceProperties tablespaceProperties); public Tablespace getResult() { return result; } protected Environment getSelectedEnvironment() { int index = this.environmentCombo.getSelectionIndex(); List<Environment> environmentList = this.diagram.getDiagramContents() .getSettings().getEnvironmentSetting().getEnvironments(); return environmentList.get(index); } /** * {@inheritDoc} */ @Override protected void addListener() { this.environmentCombo.addSelectionListener(new SelectionAdapter() { /** * {@inheritDoc} */ @Override public void widgetSelected(SelectionEvent e) { perfomeOK(); setPropertiesData(); } }); } }