package com.tibco.as.spacebar.ui.wizards.metaspace;
import org.eclipse.core.databinding.DataBindingContext;
import org.eclipse.core.databinding.beans.PojoObservables;
import org.eclipse.core.databinding.observable.value.IObservableValue;
import org.eclipse.jface.databinding.swt.SWTObservables;
import org.eclipse.jface.layout.GridDataFactory;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.FileDialog;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Text;
import com.tibco.as.spacebar.ui.model.Metaspace;
public class MetaspaceEditor extends Composite {
private DataBindingContext m_bindingContext;
private Metaspace metaspace;
private Text nameText;
private Text metaspaceText;
private Text memberText;
private Text discoveryText;
private Button remoteButton;
private Text listenText;
private Text timeoutText;
private Text securityTokenFileText;
private Text identityPasswordText;
private Button autoconnectButton;
private Button browseFileButton;
public MetaspaceEditor(Composite parent, int style, Metaspace metaspace) {
this(parent, style);
setMetaspace(metaspace);
}
private MetaspaceEditor(Composite parent, int style) {
super(parent, style);
setLayout(new GridLayout(3, false));
new Label(this, SWT.NONE).setText("Name:");
nameText = new Text(this, SWT.BORDER | SWT.SINGLE);
nameText.setLayoutData(newGridData(2));
new Label(this, SWT.NONE).setText("Metaspace:");
metaspaceText = new Text(this, SWT.BORDER | SWT.SINGLE);
metaspaceText.setLayoutData(newGridData(2));
new Label(this, SWT.NONE).setText("Member:");
memberText = new Text(this, SWT.BORDER | SWT.SINGLE);
memberText.setLayoutData(newGridData(2));
new Label(this, SWT.NONE).setText("Discovery:");
discoveryText = new Text(this, SWT.BORDER | SWT.SINGLE);
discoveryText.setLayoutData(newGridData(2));
remoteButton = new Button(this, SWT.CHECK | SWT.LEFT);
GridDataFactory.defaultsFor(remoteButton).span(3, 1)
.applyTo(remoteButton);
remoteButton.setText("Remote");
new Label(this, SWT.NONE).setText("Listen:");
listenText = new Text(this, SWT.BORDER | SWT.SINGLE);
listenText.setLayoutData(newGridData(2));
Label timeoutLabel = new Label(this, SWT.NONE);
timeoutLabel.setText("Timeout:");
timeoutText = new Text(this, SWT.BORDER | SWT.SINGLE);
timeoutText.setLayoutData(newGridData(2));
Label securityTokenFileLabel = new Label(this, SWT.NONE);
securityTokenFileLabel.setText("Security Token File:");
securityTokenFileText = new Text(this, SWT.BORDER | SWT.SINGLE);
securityTokenFileText.setLayoutData(newGridData(1));
browseFileButton = new Button(this, SWT.PUSH);
browseFileButton.setText("Browse...");
browseFileButton.addSelectionListener(new SelectionListener() {
public void widgetDefaultSelected(SelectionEvent e) {
}
public void widgetSelected(SelectionEvent e) {
FileDialog dialog = new FileDialog(browseFileButton.getShell(),
SWT.OPEN);
dialog.setText("Open");
String path = dialog.open();
if (path == null)
return;
securityTokenFileText.setText(path);
}
});
browseFileButton.setLayoutData(new GridData(SWT.FILL, SWT.CENTER,
false, false));
Label identityPasswordLabel = new Label(this, SWT.NONE);
identityPasswordLabel.setText("Identity Password:");
identityPasswordText = new Text(this, SWT.PASSWORD | SWT.BORDER);
identityPasswordText.setLayoutData(newGridData(2));
autoconnectButton = new Button(this, SWT.CHECK | SWT.LEFT);
autoconnectButton.setText("Autoconnect");
GridDataFactory.defaultsFor(remoteButton).span(3, 1)
.applyTo(autoconnectButton);
if (metaspace != null) {
m_bindingContext = initDataBindings();
}
}
private GridData newGridData(int horizontalSpan) {
GridData gridData = new GridData(SWT.FILL, SWT.CENTER, true, false);
gridData.horizontalSpan = horizontalSpan;
return gridData;
}
@Override
protected void checkSubclass() {
// Disable the check that prevents subclassing of SWT components
}
private DataBindingContext initDataBindings() {
IObservableValue nameObserveWidget = SWTObservables.observeText(
nameText, SWT.Modify);
IObservableValue nameObserveValue = PojoObservables.observeValue(
metaspace, "name");
IObservableValue metaspaceObserveWidget = SWTObservables.observeText(
metaspaceText, SWT.Modify);
IObservableValue metaspaceObserveValue = PojoObservables.observeValue(
metaspace, "metaspaceName");
IObservableValue memberObserveWidget = SWTObservables.observeText(
memberText, SWT.Modify);
IObservableValue memberObserveValue = PojoObservables.observeValue(
metaspace, "memberName");
IObservableValue discoveryObserveWidget = SWTObservables.observeText(
discoveryText, SWT.Modify);
IObservableValue discoveryObserveValue = PojoObservables.observeValue(
metaspace, "discovery");
IObservableValue remoteObserveWidget = SWTObservables
.observeSelection(remoteButton);
IObservableValue remoteObserveValue = PojoObservables.observeValue(
metaspace, "remote");
IObservableValue listenObserveWidget = SWTObservables.observeText(
listenText, SWT.Modify);
IObservableValue listenObserveValue = PojoObservables.observeValue(
metaspace, "listen");
IObservableValue timeoutObserveWidget = SWTObservables.observeText(
timeoutText, SWT.Modify);
IObservableValue timeoutObserveValue = PojoObservables.observeValue(
metaspace, "timeout");
IObservableValue securityTokenFileObserveWidget = SWTObservables
.observeText(securityTokenFileText, SWT.Modify);
IObservableValue securityTokenFileObserveValue = PojoObservables
.observeValue(metaspace, "securityTokenFile");
IObservableValue identityPasswordObserveWidget = SWTObservables
.observeText(identityPasswordText, SWT.Modify);
IObservableValue identityPasswordObserveValue = PojoObservables
.observeValue(metaspace, "identityPassword");
IObservableValue autoconnectObserveWidget = SWTObservables
.observeSelection(autoconnectButton);
IObservableValue autoconnectObserveValue = PojoObservables
.observeValue(metaspace, "autoconnect");
//
DataBindingContext bindingContext = new DataBindingContext();
//
bindingContext.bindValue(nameObserveWidget, nameObserveValue, null,
null);
bindingContext.bindValue(metaspaceObserveWidget, metaspaceObserveValue,
null, null);
bindingContext.bindValue(memberObserveWidget, memberObserveValue, null,
null);
bindingContext.bindValue(discoveryObserveWidget, discoveryObserveValue,
null, null);
bindingContext.bindValue(remoteObserveWidget, remoteObserveValue, null,
null);
bindingContext.bindValue(listenObserveWidget, listenObserveValue, null,
null);
bindingContext.bindValue(timeoutObserveWidget, timeoutObserveValue,
null, null);
bindingContext.bindValue(securityTokenFileObserveWidget,
securityTokenFileObserveValue, null, null);
bindingContext.bindValue(identityPasswordObserveWidget,
identityPasswordObserveValue, null, null);
bindingContext.bindValue(autoconnectObserveWidget,
autoconnectObserveValue, null, null);
//
return bindingContext;
}
public Metaspace getMetaspace() {
return metaspace;
}
public void setMetaspace(Metaspace newMetaspace) {
setMetaspace(newMetaspace, true);
}
public void setMetaspace(Metaspace newMetaspace, boolean update) {
metaspace = newMetaspace;
if (update) {
if (m_bindingContext != null) {
m_bindingContext.dispose();
m_bindingContext = null;
}
if (metaspace != null) {
m_bindingContext = initDataBindings();
}
}
}
}