--- /dev/null
+package com.quantum.properties;
+
+import com.quantum.model.Column;
+import com.quantum.model.Entity;
+import com.quantum.model.Index;
+import com.quantum.view.bookmark.EntityNode;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.TabFolder;
+import org.eclipse.swt.widgets.TabItem;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.TableColumn;
+import org.eclipse.swt.widgets.TableItem;
+import org.eclipse.ui.dialogs.PropertyPage;
+
+public class EntityPropertyPage extends PropertyPage {
+
+ protected Control createContents(Composite parent) {
+
+ Composite composite = new Composite(parent, SWT.NONE);
+ GridLayout layout = new GridLayout();
+ layout.numColumns = 2;
+ composite.setLayout(layout);
+ GridData data = new GridData(GridData.FILL);
+ data.grabExcessHorizontalSpace = true;
+ composite.setLayoutData(data);
+
+ Label label = new Label(composite, SWT.NONE);
+ label.setText("Name:");
+
+ Entity entity = getEntity();
+
+ Label name = new Label(composite, SWT.NONE);
+ name.setText(entity.getName());
+
+ label = new Label(composite, SWT.NONE);
+ label.setText("Schema:");
+
+ Label schema = new Label(composite, SWT.NONE);
+ schema.setText(entity.getSchema());
+
+ if (!Entity.SEQUENCE_TYPE.equals(getEntity().getType())) {
+ TabFolder tabFolder = new TabFolder(parent, SWT.NONE);
+ layout = new GridLayout();
+ tabFolder.setLayout(layout);
+ data = new GridData(GridData.FILL_BOTH);
+ data.grabExcessHorizontalSpace = true;
+ data.grabExcessVerticalSpace = true;
+ data.verticalAlignment = GridData.FILL;
+ data.horizontalSpan = 2;
+ data.verticalAlignment = GridData.VERTICAL_ALIGN_BEGINNING;
+ tabFolder.setLayoutData(data);
+
+ createColumnsTab(tabFolder);
+ createIndexesTab(tabFolder);
+ }
+
+ return composite;
+ }
+
+ private Entity getEntity() {
+ Entity entity =
+ ((EntityNode) getElement()).getEntity();
+ return entity;
+ }
+
+ private void createColumnsTab(TabFolder tabFolder) {
+ TabItem columnsTab = new TabItem(tabFolder, SWT.NONE);
+ columnsTab.setText("Columns");
+
+ Table table = new Table(tabFolder, SWT.FULL_SELECTION | SWT.MULTI);
+ table.setLinesVisible(true);
+ table.setHeaderVisible(true);
+
+ GridLayout layout = new GridLayout();
+ layout.marginWidth = 5;
+ layout.marginHeight = 5;
+ table.setLayout(layout);
+ GridData data = new GridData(GridData.FILL);
+ data.horizontalAlignment = GridData.FILL_HORIZONTAL;
+ data.verticalAlignment = GridData.FILL_VERTICAL;
+ data.grabExcessHorizontalSpace = true;
+ data.grabExcessVerticalSpace = true;
+ table.setLayoutData(data);
+
+ String[] columnNames = { "Name", "Type", "Size", "Digits",
+ "Primary Key", "Nullable", "Remarks" };
+
+ for (int i = 0, length = columnNames.length; i < length; i++) {
+ TableColumn column = new TableColumn(table, SWT.NONE);
+ column.setText(columnNames[i]);
+ }
+ for (int i = 0, length = columnNames.length; i < length; i++) {
+ table.getColumn(i).pack();
+ }
+
+ Column[] columns = getEntity().getColumns();
+ for (int i = 0, length = columns.length; i < length; i++) {
+ TableItem item = new TableItem(table, SWT.NONE);
+ item.setText(new String[] {
+ columns[i].getName(),
+ columns[i].getTypeName(),
+ String.valueOf(columns[i].getSize()),
+ columns[i].getNumberOfFractionalDigits() == 0 ? "" :
+ String.valueOf(columns[i].getNumberOfFractionalDigits()),
+ columns[i].isPrimaryKey() ? "Yes" : "No",
+ columns[i].isNullable() ? "Yes" : "No",
+ columns[i].getRemarks() });
+ }
+
+ for (int i = 0, length = columnNames.length; i < length; i++) {
+ table.getColumn(i).pack();
+ }
+
+ data = new GridData(GridData.FILL);
+ data.horizontalAlignment = GridData.FILL_HORIZONTAL;
+ data.verticalAlignment = GridData.FILL_VERTICAL;
+ data.grabExcessHorizontalSpace = true;
+ data.grabExcessVerticalSpace = true;
+ table.setLayoutData(data);
+
+ columnsTab.setControl(table);
+ }
+
+ private void createIndexesTab(TabFolder tabFolder) {
+ TabItem indexesTab = new TabItem(tabFolder, SWT.NONE);
+ indexesTab.setText("Indexes");
+
+ Table table = new Table(tabFolder, SWT.FULL_SELECTION | SWT.MULTI);
+ table.setLinesVisible(true);
+ table.setHeaderVisible(true);
+
+ GridLayout layout = new GridLayout();
+ layout.marginWidth = 5;
+ layout.marginHeight = 5;
+ table.setLayout(layout);
+ GridData data = new GridData(GridData.FILL);
+ data.horizontalAlignment = GridData.FILL_HORIZONTAL;
+ data.verticalAlignment = GridData.FILL_VERTICAL;
+ data.grabExcessHorizontalSpace = true;
+ data.grabExcessVerticalSpace = true;
+ table.setLayoutData(data);
+
+ String[] columnNames = { "Name", "Column", "Ascending" };
+
+ for (int i = 0, length = columnNames.length; i < length; i++) {
+ TableColumn column = new TableColumn(table, SWT.NONE);
+ column.setText(columnNames[i]);
+ }
+ for (int i = 0, length = columnNames.length; i < length; i++) {
+ table.getColumn(i).pack();
+ }
+
+ Index[] indexes = getEntity().getIndexes();
+ for (int i = 0, length = indexes.length; i < length; i++) {
+ for (int j = 0, numberOfColumns = indexes[i].getNumberOfColumns();
+ j < numberOfColumns; j++) {
+
+ TableItem item = new TableItem(table, SWT.NONE);
+ item.setText(new String[] {
+ j == 0 ? indexes[i].getName() : "",
+ indexes[i].getColumnName(j),
+ indexes[i].isAscending(j) ? "Yes"
+ : (indexes[i].isDescending(j)) ? "No" : "" });
+ }
+ }
+
+ for (int i = 0, length = columnNames.length; i < length; i++) {
+ table.getColumn(i).pack();
+ }
+
+ data = new GridData(GridData.FILL);
+ data.horizontalAlignment = GridData.FILL_HORIZONTAL;
+ data.verticalAlignment = GridData.FILL_VERTICAL;
+ data.grabExcessHorizontalSpace = true;
+ data.grabExcessVerticalSpace = true;
+ table.setLayoutData(data);
+
+ indexesTab.setControl(table);
+ }
+
+}
\ No newline at end of file