X-Git-Url: http://secure.phpeclipse.com diff --git a/archive/net.sourceforge.phpeclipse.quantum.sql/src/com/quantum/wizards/URLSetupControl.java b/archive/net.sourceforge.phpeclipse.quantum.sql/src/com/quantum/wizards/URLSetupControl.java new file mode 100644 index 0000000..b689441 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.quantum.sql/src/com/quantum/wizards/URLSetupControl.java @@ -0,0 +1,112 @@ +package com.quantum.wizards; + +import java.beans.PropertyChangeListener; +import java.beans.PropertyChangeSupport; +import java.util.Collections; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; + +import com.quantum.Messages; +import com.quantum.adapters.AdapterFactory; +import com.quantum.adapters.DatabaseAdapter; +import com.quantum.model.JDBCDriver; + +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.Group; + + +/** + * @author BC + */ +public abstract class URLSetupControl extends Composite { + + private PropertyChangeSupport propertyChangeSupport = new PropertyChangeSupport(this); + private String urlPattern; + private Map properties = Collections.synchronizedMap(new HashMap()); + private final JDBCDriver driver; + private String connectionURL; + + /** + * @param parent + * @param style + */ + public URLSetupControl(Composite parent, JDBCDriver driver) { + super(parent, SWT.NONE); + this.driver = driver; + GridLayout layout = new GridLayout(); + setLayout(layout); + this.urlPattern = AdapterFactory.getInstance().getURLPattern(driver.getClassName()); + + setPropertyDefaults(); + setConnectionURL(URLBuilder.createURL(this.urlPattern, getProperties())); + } + + /** + * + */ + protected void createPart() { + Group group = new Group(this, SWT.SHADOW_ETCHED_IN); + group.setText(Messages.getString(URLSetupControl.class, "text")); + group.setLayoutData(new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_BEGINNING)); + + createPart(group); + } + + /** + * + */ + private void setPropertyDefaults() { + DatabaseAdapter adapter = + AdapterFactory.getInstance().getAdapter(getDriver().getType()); + Map properties = (adapter == null) ? new HashMap() : adapter.getDefaultConnectionParameters(); + for (Iterator i = properties.keySet().iterator(); i.hasNext();) { + String key = (String) i.next(); + putProperty(key, (String) properties.get(key)); + + } + } + + protected abstract void createPart(Composite parent); + + private Map getProperties() { + return this.properties; + } + + protected String getProperty(String name) { + String value = (String) this.properties.get(name); + return value == null ? "" : value; + } + + protected void putProperty(String name, String value) { + this.properties.put(name, value); + setConnectionURL(URLBuilder.createURL(this.urlPattern, getProperties())); + } + + public void addPropertyChangeListener(PropertyChangeListener listener) { + this.propertyChangeSupport.addPropertyChangeListener(listener); + } + public void removePropertyChangeListener(PropertyChangeListener listener) { + this.propertyChangeSupport.removePropertyChangeListener(listener); + } + protected void firePropertyChange(String propertyName, Object oldValue, Object newValue) { + this.propertyChangeSupport.firePropertyChange(propertyName, oldValue, newValue); + } + + protected JDBCDriver getDriver() { + return this.driver; + } + public String getConnectionURL() { + return this.connectionURL == null ? "" : this.connectionURL; + } + public void setConnectionURL(String connectionURL) { + if (connectionURL != null && !connectionURL.equals(this.connectionURL)) { + String original = this.connectionURL; + this.connectionURL = connectionURL; + firePropertyChange("connectionURL", original, connectionURL); + } + } +}