Quantum version 2.4.2
[phpeclipse.git] / archive / net.sourceforge.phpeclipse.quantum.sql / src / com / quantum / properties / DataTypesPropertyPage.java
diff --git a/archive/net.sourceforge.phpeclipse.quantum.sql/src/com/quantum/properties/DataTypesPropertyPage.java b/archive/net.sourceforge.phpeclipse.quantum.sql/src/com/quantum/properties/DataTypesPropertyPage.java
new file mode 100644 (file)
index 0000000..a1f5929
--- /dev/null
@@ -0,0 +1,156 @@
+package com.quantum.properties;
+
+import java.sql.SQLException;
+
+import com.quantum.ImageStore;
+import com.quantum.Messages;
+import com.quantum.model.Bookmark;
+import com.quantum.model.DataType;
+import com.quantum.model.NotConnectedException;
+import com.quantum.view.bookmark.TreeNode;
+
+import org.eclipse.jface.viewers.ILabelProviderListener;
+import org.eclipse.jface.viewers.IStructuredContentProvider;
+import org.eclipse.jface.viewers.ITableLabelProvider;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Image;
+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.Table;
+import org.eclipse.swt.widgets.TableColumn;
+import org.eclipse.ui.dialogs.PropertyPage;
+
+public class DataTypesPropertyPage extends PropertyPage {
+
+    protected Control createContents(Composite parent) {
+
+        Composite composite = new Composite(parent, SWT.NONE);
+        GridLayout layout = new GridLayout();
+        layout.numColumns = 2;
+        composite.setLayout(layout);
+        composite.setLayoutData(new GridData(GridData.FILL_BOTH));
+        Bookmark bookmark =
+            ((TreeNode) getElement()).getBookmark();
+        createTypesArea(composite, bookmark);
+        
+        return composite;
+       }
+
+       /**
+        * @param composite
+        * @param bookmark
+        */
+       private void createTypesArea(Composite composite, Bookmark bookmark) {
+               if (bookmark.isConnected()) {
+               try {
+                       DataType[] dataTypes = bookmark.getDatabase().getTypes();
+                       Label label = new Label(composite, SWT.NONE);
+                       label.setText(Messages.getString(getClass(), "dataTypes"));
+                       GridData data = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING | GridData.VERTICAL_ALIGN_BEGINNING);
+                       data.horizontalSpan = 2;
+                       label.setLayoutData(data);
+               
+                       Table table = new Table(composite, SWT.SINGLE | SWT.FULL_SELECTION | SWT.BORDER);
+                table.setHeaderVisible(true);
+                GridData gridData = new GridData(GridData.FILL_BOTH);
+                gridData.horizontalSpan = 2;
+                gridData.heightHint = 200;
+                gridData.widthHint = 100;
+                table.setLayoutData(gridData);
+                for (int i = 0, length = 6; i < length; i++) {
+                    TableColumn column = new TableColumn(table, SWT.NONE);
+                    column.setText(Messages.getString(getClass(), "column" + i));
+                }
+                       TableViewer viewer = new TableViewer(table);
+                       viewer.setContentProvider(new IStructuredContentProvider() {
+                                       public Object[] getElements(Object inputElement) {
+                                               if (inputElement instanceof DataType[]) {
+                                                       return (DataType[]) inputElement;
+                                               } else {
+                                                       return null;
+                                               }
+                                       }
+                                       public void dispose() {
+                                       }
+                                       public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+                                       }
+                               });
+                       viewer.setLabelProvider(new ITableLabelProvider() {
+                                       public Image getColumnImage(Object element, int columnIndex) {
+                                               return null;
+                                       }
+                                       public String getColumnText(Object element, int columnIndex) {
+                                               String result = null;
+                                               if (element != null && element instanceof DataType) {
+                                                       DataType dataType = (DataType) element;
+                                                       switch (columnIndex) {
+                                                       case 0:
+                                                               result = dataType.getDatabaseTypeName();
+                                                               break;
+                                                       case 1:
+                                                               result = dataType.getJavaNameType();
+                                                               break;
+                                                       case 2:
+                                                               result = String.valueOf(dataType.getPrecision());
+                                                               break;
+                                                       case 3:
+                                                               result = dataType.getLiteralPrefix();
+                                                               break;
+                                                       case 4:
+                                                               result = dataType.getLiteralSuffix();
+                                                               break;
+                                                       case 5:
+                                                               result = dataType.getCreateParameters();
+                                                               break;
+                                                       default:
+                                                               result = null;
+                                                       }
+                                               }
+                                               return result == null ? "" : result;
+                                       }
+                                       public void addListener(ILabelProviderListener listener) {
+                                       }
+                                       public void dispose() {
+                                       }
+                                       public boolean isLabelProperty(Object element, String property) {
+                                               return false;
+                                       }
+                                       public void removeListener(ILabelProviderListener listener) {
+                                       }
+                       });
+                       
+                       viewer.setInput(dataTypes);
+                       
+                for (int i = 0, length = table.getColumnCount(); i < length; i++) {
+                    table.getColumn(i).pack();
+                }
+               
+               } catch (SQLException e) {
+                       createErrorMessage(composite, e);
+               } catch (NotConnectedException e) {
+                       createErrorMessage(composite, e);
+               } catch (RuntimeException e) {
+                       createErrorMessage(composite, e);
+                       }
+        }
+       }
+
+       /**
+        * @param composite
+        */
+       private void createErrorMessage(Composite composite, Exception e) {
+               Label icon = new Label(composite, SWT.NONE);
+               icon.setLayoutData(new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_BEGINNING));
+               icon.setImage(ImageStore.getImage(ImageStore.WARNING));
+               
+               Label error = new Label(composite, SWT.NONE);
+               error.setLayoutData(new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_BEGINNING));
+               error.setText(Messages.getString(getClass(), "error") 
+                               + (e.getMessage() == null ? "" : "\n" + e.getMessage()));
+       }
+}
\ No newline at end of file