--- /dev/null
+package com.quantum.properties;
+
+import com.quantum.IQuantumConstants;
+import com.quantum.adapters.AdapterFactory;
+import com.quantum.adapters.DriverInfo;
+import com.quantum.model.Bookmark;
+import com.quantum.view.bookmark.TreeNode;
+
+import org.eclipse.swt.SWT;
+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.Combo;
+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.Text;
+import org.eclipse.ui.dialogs.PropertyPage;
+
+public class BookmarkPropertyPage extends PropertyPage {
+
+ private Text password;
+ private Text userid;
+ private Button prompt;
+
+ private Text jdbcURL;
+ private Text driverName;
+ private Text driverPath;
+
+ private Combo type;
+ private Combo autoCommit;
+ private DriverInfo[] adapters = AdapterFactory.getInstance().getDriverList();
+
+ 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 nameLabel = new Label(composite, SWT.NONE);
+ nameLabel.setText("Name:");
+
+ Label name = new Label(composite, SWT.NONE);
+
+ Bookmark bookmark = getBookmark();
+ String description = bookmark.getName();
+ name.setText(description);
+
+ 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);
+
+ createUserTab(tabFolder);
+ createDriverTab(tabFolder);
+ createOptionsTab(tabFolder);
+
+ performDefaults();
+ return composite;
+ }
+
+ private Bookmark getBookmark() {
+ Bookmark bookmark =
+ ((TreeNode) getElement()).getBookmark();
+ return bookmark;
+ }
+
+ private void createDriverTab(TabFolder tabFolder) {
+ TabItem driverTab = new TabItem(tabFolder, SWT.NONE);
+ driverTab.setText("JDBC Driver");
+
+ Composite composite = new Composite(tabFolder, SWT.NONE);
+ GridLayout layout = new GridLayout();
+ layout.numColumns = 2;
+ composite.setLayout(layout);
+ GridData data = new GridData(GridData.FILL);
+ data.verticalAlignment = GridData.VERTICAL_ALIGN_BEGINNING;
+ data.grabExcessHorizontalSpace = true;
+ composite.setLayoutData(data);
+
+ Label label = new Label(composite, SWT.NONE);
+ label.setText("Connection URL:");
+
+ this.jdbcURL = new Text(composite, SWT.BORDER);
+ data = new GridData(GridData.FILL);
+ data.horizontalAlignment = GridData.FILL;
+ data.grabExcessHorizontalSpace = true;
+ data.grabExcessHorizontalSpace = true;
+ this.jdbcURL.setLayoutData(data);
+
+ label = new Label(composite, SWT.NONE);
+ label.setText("Driver Name:");
+
+ this.driverName = new Text(composite, SWT.BORDER);
+ data = new GridData(GridData.FILL);
+ data.horizontalAlignment = GridData.FILL;
+ data.grabExcessHorizontalSpace = true;
+ this.driverName.setLayoutData(data);
+
+ label = new Label(composite, SWT.NONE);
+ label.setText("Driver Location:");
+
+ this.driverPath = new Text(composite, SWT.BORDER);
+ data = new GridData(GridData.FILL);
+ data.horizontalAlignment = GridData.FILL;
+ data.grabExcessHorizontalSpace = true;
+ this.driverPath.setLayoutData(data);
+
+ label = new Label(composite, SWT.NULL);
+ label.setText("Type:");
+ this.type = new Combo(composite, SWT.SIMPLE | SWT.DROP_DOWN | SWT.READ_ONLY);
+ String adapterNames[] = new String[adapters.length];
+ for (int i = 0; i < adapters.length; i++) {
+ adapterNames[i] = adapters[i].getDisplayName();
+ }
+ this.type.setItems(adapterNames);
+
+ data = new GridData();
+ data.horizontalAlignment = GridData.FILL;
+ this.type.setLayoutData(data);
+
+ driverTab.setControl(composite);
+ }
+
+ private void createUserTab(TabFolder tabFolder) {
+ TabItem userTab = new TabItem(tabFolder, SWT.NONE);
+ userTab.setText("User");
+
+ Composite composite = new Composite(tabFolder, SWT.NONE);
+ GridLayout layout = new GridLayout();
+ layout.numColumns = 2;
+ composite.setLayout(layout);
+ GridData data = new GridData(GridData.FILL);
+ data.verticalAlignment = GridData.VERTICAL_ALIGN_BEGINNING;
+ data.grabExcessHorizontalSpace = true;
+ composite.setLayoutData(data);
+
+ Label useridLabel = new Label(composite, SWT.NONE);
+ useridLabel.setText("Userid:");
+
+ this.userid = new Text(composite, SWT.BORDER);
+ data = new GridData(GridData.FILL);
+ data.horizontalAlignment = GridData.FILL;
+ data.grabExcessHorizontalSpace = true;
+ data.grabExcessHorizontalSpace = true;
+ this.userid.setLayoutData(data);
+
+ Label passworLabel = new Label(composite, SWT.NONE);
+ passworLabel.setText("Password:");
+
+ this.password = new Text(composite, SWT.BORDER);
+ this.password.setEchoChar('*');
+ data = new GridData(GridData.FILL);
+ data.horizontalAlignment = GridData.FILL;
+ data.grabExcessHorizontalSpace = true;
+ this.password.setLayoutData(data);
+
+ this.prompt = new Button(composite, SWT.CHECK);
+ this.prompt.setText("Prompt for password");
+ data = new GridData(GridData.FILL);
+ data.horizontalSpan = 2;
+ data.horizontalAlignment = GridData.FILL;
+ data.grabExcessHorizontalSpace = true;
+ this.prompt.setLayoutData(data);
+
+ this.prompt.addSelectionListener(new SelectionAdapter() {
+ public void widgetSelected(SelectionEvent event) {
+ password.setEditable(!((Button) event.getSource()).getSelection());
+ }
+ });
+
+ userTab.setControl(composite);
+ }
+
+ /**
+ * @param tabFolder
+ */
+ private void createOptionsTab(TabFolder tabFolder) {
+ TabItem optionsTab = new TabItem(tabFolder, SWT.NONE);
+ optionsTab.setText("Options");
+
+ Composite composite = new Composite(tabFolder, SWT.NONE);
+ GridLayout layout = new GridLayout();
+ layout.numColumns = 2;
+ composite.setLayout(layout);
+ GridData data = new GridData(GridData.FILL);
+ data.verticalAlignment = GridData.VERTICAL_ALIGN_BEGINNING;
+ data.grabExcessHorizontalSpace = true;
+ composite.setLayoutData(data);
+
+ Label label;
+
+ label = new Label(composite, SWT.NULL);
+ label.setText("On connection, Auto-Commit should be:");
+ this.autoCommit = new Combo(composite, SWT.SIMPLE | SWT.DROP_DOWN | SWT.READ_ONLY);
+ String autoCommitTypes[] = new String[] {
+ IQuantumConstants.autoCommitTrue,
+ IQuantumConstants.autoCommitFalse,
+ IQuantumConstants.autoCommitSaved
+ };
+ this.autoCommit.setItems(autoCommitTypes);
+
+ data = new GridData();
+ data.horizontalAlignment = GridData.FILL;
+ this.autoCommit.setLayoutData(data);
+
+ optionsTab.setControl(composite);
+
+ }
+
+
+
+ /**
+ * @see org.eclipse.jface.preference.PreferencePage#performApply()
+ */
+ public boolean performOk() {
+ Bookmark bookmark = getBookmark();
+ bookmark.setUsername(this.userid.getText());
+ bookmark.setPromptForPassword(this.prompt.getSelection());
+ if (this.prompt.getSelection()) {
+ bookmark.setPassword("");
+ } else {
+ bookmark.setPassword(this.password.getText());
+ }
+
+ int index = this.type.getSelectionIndex();
+ bookmark.setType(this.adapters[index].getDriverType());
+ bookmark.setConnect(this.jdbcURL.getText());
+ bookmark.setDriver(this.driverName.getText());
+ bookmark.setDriverFile(this.driverPath.getText());
+ if (this.autoCommit.getSelectionIndex() >= 0)
+ bookmark.setAutoCommitPreference(this.autoCommit.getItem(this.autoCommit.getSelectionIndex()));
+ return super.performOk();
+ }
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.preference.PreferencePage#performDefaults()
+ */
+ protected void performDefaults() {
+ super.performDefaults();
+ Bookmark bookmark = getBookmark();
+
+ this.prompt.setSelection(bookmark.getPromptForPassword());
+ this.password.setEditable(!bookmark.getPromptForPassword());
+ this.password.setText(bookmark.getPassword());
+ this.userid.setText(bookmark.getUsername());
+
+ this.type.select(0);
+ boolean done = false;
+ for (int i = 0,
+ length = (adapters == null) ? 0 : adapters.length;
+ !done && i < length;
+ i++) {
+ if (bookmark.getType() != null &&
+ bookmark.getType().equals(adapters[i].getDriverType())) {
+ this.type.select(i);
+ done = true;
+ }
+ }
+ if (bookmark.getAutoCommitPreference().equals(IQuantumConstants.autoCommitTrue))
+ this.autoCommit.select(0);
+ else if (bookmark.getAutoCommitPreference().equals(IQuantumConstants.autoCommitFalse))
+ this.autoCommit.select(1);
+ else if (bookmark.getAutoCommitPreference().equals(IQuantumConstants.autoCommitSaved))
+ this.autoCommit.select(2);
+
+ this.driverName.setText(bookmark.getDriver());
+ this.jdbcURL.setText(bookmark.getConnect());
+ this.driverPath.setText(bookmark.getDriverFile());
+ }
+}