Quantum version 2.4.2
[phpeclipse.git] / archive / net.sourceforge.phpeclipse.quantum.sql / src / com / quantum / properties / DataTypesPropertyPage.java
1 package com.quantum.properties;
2
3 import java.sql.SQLException;
4
5 import com.quantum.ImageStore;
6 import com.quantum.Messages;
7 import com.quantum.model.Bookmark;
8 import com.quantum.model.DataType;
9 import com.quantum.model.NotConnectedException;
10 import com.quantum.view.bookmark.TreeNode;
11
12 import org.eclipse.jface.viewers.ILabelProviderListener;
13 import org.eclipse.jface.viewers.IStructuredContentProvider;
14 import org.eclipse.jface.viewers.ITableLabelProvider;
15 import org.eclipse.jface.viewers.TableViewer;
16 import org.eclipse.jface.viewers.Viewer;
17 import org.eclipse.swt.SWT;
18 import org.eclipse.swt.graphics.Image;
19 import org.eclipse.swt.layout.GridData;
20 import org.eclipse.swt.layout.GridLayout;
21 import org.eclipse.swt.widgets.Composite;
22 import org.eclipse.swt.widgets.Control;
23 import org.eclipse.swt.widgets.Label;
24 import org.eclipse.swt.widgets.Table;
25 import org.eclipse.swt.widgets.TableColumn;
26 import org.eclipse.ui.dialogs.PropertyPage;
27
28 public class DataTypesPropertyPage extends PropertyPage {
29
30     protected Control createContents(Composite parent) {
31
32         Composite composite = new Composite(parent, SWT.NONE);
33         GridLayout layout = new GridLayout();
34         layout.numColumns = 2;
35         composite.setLayout(layout);
36         composite.setLayoutData(new GridData(GridData.FILL_BOTH));
37         Bookmark bookmark =
38             ((TreeNode) getElement()).getBookmark();
39         createTypesArea(composite, bookmark);
40         
41         return composite;
42         }
43
44         /**
45          * @param composite
46          * @param bookmark
47          */
48         private void createTypesArea(Composite composite, Bookmark bookmark) {
49                 if (bookmark.isConnected()) {
50                 try {
51                         DataType[] dataTypes = bookmark.getDatabase().getTypes();
52                         Label label = new Label(composite, SWT.NONE);
53                         label.setText(Messages.getString(getClass(), "dataTypes"));
54                         GridData data = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING | GridData.VERTICAL_ALIGN_BEGINNING);
55                         data.horizontalSpan = 2;
56                         label.setLayoutData(data);
57                 
58                         Table table = new Table(composite, SWT.SINGLE | SWT.FULL_SELECTION | SWT.BORDER);
59                 table.setHeaderVisible(true);
60                 GridData gridData = new GridData(GridData.FILL_BOTH);
61                 gridData.horizontalSpan = 2;
62                 gridData.heightHint = 200;
63                 gridData.widthHint = 100;
64                 table.setLayoutData(gridData);
65                 for (int i = 0, length = 6; i < length; i++) {
66                     TableColumn column = new TableColumn(table, SWT.NONE);
67                     column.setText(Messages.getString(getClass(), "column" + i));
68                 }
69                         TableViewer viewer = new TableViewer(table);
70                         viewer.setContentProvider(new IStructuredContentProvider() {
71                                         public Object[] getElements(Object inputElement) {
72                                                 if (inputElement instanceof DataType[]) {
73                                                         return (DataType[]) inputElement;
74                                                 } else {
75                                                         return null;
76                                                 }
77                                         }
78                                         public void dispose() {
79                                         }
80                                         public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
81                                         }
82                         });
83                         viewer.setLabelProvider(new ITableLabelProvider() {
84                                         public Image getColumnImage(Object element, int columnIndex) {
85                                                 return null;
86                                         }
87                                         public String getColumnText(Object element, int columnIndex) {
88                                                 String result = null;
89                                                 if (element != null && element instanceof DataType) {
90                                                         DataType dataType = (DataType) element;
91                                                         switch (columnIndex) {
92                                                         case 0:
93                                                                 result = dataType.getDatabaseTypeName();
94                                                                 break;
95                                                         case 1:
96                                                                 result = dataType.getJavaNameType();
97                                                                 break;
98                                                         case 2:
99                                                                 result = String.valueOf(dataType.getPrecision());
100                                                                 break;
101                                                         case 3:
102                                                                 result = dataType.getLiteralPrefix();
103                                                                 break;
104                                                         case 4:
105                                                                 result = dataType.getLiteralSuffix();
106                                                                 break;
107                                                         case 5:
108                                                                 result = dataType.getCreateParameters();
109                                                                 break;
110                                                         default:
111                                                                 result = null;
112                                                         }
113                                                 }
114                                                 return result == null ? "" : result;
115                                         }
116                                         public void addListener(ILabelProviderListener listener) {
117                                         }
118                                         public void dispose() {
119                                         }
120                                         public boolean isLabelProperty(Object element, String property) {
121                                                 return false;
122                                         }
123                                         public void removeListener(ILabelProviderListener listener) {
124                                         }
125                         });
126                         
127                         viewer.setInput(dataTypes);
128                         
129                 for (int i = 0, length = table.getColumnCount(); i < length; i++) {
130                     table.getColumn(i).pack();
131                 }
132                 
133                 } catch (SQLException e) {
134                         createErrorMessage(composite, e);
135                 } catch (NotConnectedException e) {
136                         createErrorMessage(composite, e);
137                 } catch (RuntimeException e) {
138                         createErrorMessage(composite, e);
139                         }
140         }
141         }
142
143         /**
144          * @param composite
145          */
146         private void createErrorMessage(Composite composite, Exception e) {
147                 Label icon = new Label(composite, SWT.NONE);
148                 icon.setLayoutData(new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_BEGINNING));
149                 icon.setImage(ImageStore.getImage(ImageStore.WARNING));
150                 
151                 Label error = new Label(composite, SWT.NONE);
152                 error.setLayoutData(new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_BEGINNING));
153                 error.setText(Messages.getString(getClass(), "error") 
154                                 + (e.getMessage() == null ? "" : "\n" + e.getMessage()));
155         }
156 }