package org.safehaus.penrose.studio.nis.dialog;
import org.eclipse.swt.widgets.*;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.FocusAdapter;
import org.eclipse.swt.events.FocusEvent;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.RowLayout;
import org.eclipse.swt.graphics.Point;
import org.apache.log4j.Logger;
import org.safehaus.penrose.studio.PenroseImage;
import org.safehaus.penrose.studio.PenroseStudio;
/**
* @author Endi S. Dewata
*/
public class NISUserDialog extends Dialog {
Logger log = Logger.getLogger(getClass());
public final static int CANCEL = 0;
public final static int SET = 1;
public final static int CHANGE = 2;
public final static int REMOVE = 3;
Shell shell;
Label domainText;
Label uidText;
Label origUidNumberText;
Label newUidNumbersText;
Button setButton;
Text newUidNumberText;
Button revertButton;
Text messageText;
int action;
private String domain;
private String uid;
private Object origUidNumber;
private Object newUidNumber;
Object uidNumber;
String message;
public NISUserDialog(Shell parent, int style) {
super(parent, style);
}
public void open() {
setText("NIS User Editor");
shell = new Shell(getParent(), SWT.DIALOG_TRIM | SWT.APPLICATION_MODAL | SWT.RESIZE);
init();
Point size = new Point(600, 400);
shell.setSize(size);
Point l = getParent().getLocation();
Point s = getParent().getSize();
shell.setLocation(l.x + (s.x - size.x)/2, l.y + (s.y - size.y)/2);
shell.setText(getText());
shell.setImage(PenroseStudio.getImage(PenroseImage.LOGO));
shell.open();
refresh();
Display display = getParent().getDisplay();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) display.sleep();
}
}
public void init() {
createControl(shell);
}
public void refresh() {
domainText.setText(domain == null ? "" : domain);
uidText.setText(uid == null ? "" : uid);
origUidNumberText.setText(origUidNumber == null ? "" : origUidNumber.toString());
if (newUidNumber == null) {
revertButton.setEnabled(false);
} else {
newUidNumbersText.setText(newUidNumber.toString());
}
}
public void createControl(Shell parent) {
parent.setLayout(new GridLayout());
Composite composite = createInfoPanel(parent);
composite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
new Label(composite, SWT.NONE);
composite = createActionPanel(parent);
composite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
composite = createMessagePanel(parent);
composite.setLayoutData(new GridData(GridData.FILL_BOTH));
composite = createButtonsPanel(parent);
GridData gd = new GridData(GridData.FILL_HORIZONTAL);
gd.horizontalAlignment = GridData.END;
composite.setLayoutData(gd);
}
public Composite createInfoPanel(Composite parent) {
Composite composite = new Composite(parent, SWT.NONE);
composite.setLayout(new GridLayout(2, false));
Label domainLabel = new Label(composite, SWT.NONE);
domainLabel.setText("Domain:");
GridData gd = new GridData();
gd.widthHint = 150;
domainLabel.setLayoutData(gd);
domainText = new Label(composite, SWT.NONE);
domainText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
Label uidLabel = new Label(composite, SWT.NONE);
uidLabel.setText("UID:");
uidLabel.setLayoutData(new GridData());
uidText = new Label(composite, SWT.NONE);
uidText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
Label origUidNumberLabel = new Label(composite, SWT.NONE);
origUidNumberLabel.setText("Original UID number:");
origUidNumberLabel.setLayoutData(new GridData());
origUidNumberText = new Label(composite, SWT.NONE);
origUidNumberText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
Label newUidNumbersLabel = new Label(composite, SWT.NONE);
newUidNumbersLabel.setText("New UID number:");
newUidNumbersLabel.setLayoutData(new GridData());
newUidNumbersText = new Label(composite, SWT.NONE);
newUidNumbersText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
return composite;
}
public Composite createActionPanel(Composite parent) {
Composite composite = new Composite(parent, SWT.NONE);
composite.setLayout(new GridLayout(2, false));
Label actionLabel = new Label(composite, SWT.NONE);
actionLabel.setText("Action:");
GridData gd = new GridData();
gd.horizontalSpan = 2;
actionLabel.setLayoutData(gd);
setButton = new Button(composite, SWT.RADIO);
setButton.setLayoutData(new GridData());
setButton.setText("Set new UID number:");
setButton.setSelection(true);
newUidNumberText = new Text(composite, SWT.BORDER);
gd = new GridData();
gd.widthHint = 100;
newUidNumberText.setLayoutData(gd);
newUidNumberText.addFocusListener(new FocusAdapter() {
public void focusGained(FocusEvent focusEvent) {
setButton.setSelection(true);
revertButton.setSelection(false);
}
});
revertButton = new Button(composite, SWT.RADIO);
revertButton.setText("Revert to the original UID number.");
gd = new GridData();
gd.horizontalSpan = 2;
revertButton.setLayoutData(gd);
return composite;
}
public Composite createMessagePanel(Composite parent) {
Composite composite = new Composite(parent, SWT.NONE);
composite.setLayout(new GridLayout());
Label messageLabel = new Label(composite, SWT.NONE);
messageLabel.setText("Message:");
messageLabel.setLayoutData(new GridData());
messageText = new Text(composite, SWT.BORDER | SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
messageText.setLayoutData(new GridData(GridData.FILL_BOTH));
return composite;
}
public Composite createButtonsPanel(Composite parent) {
Composite composite = new Composite(parent, SWT.NONE);
composite.setLayout(new RowLayout());
Button cancelButton = new Button(composite, SWT.PUSH);
cancelButton.setText(" Cancel ");
cancelButton.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
action = CANCEL;
shell.close();
}
});
Button okButton = new Button(composite, SWT.PUSH);
okButton.setText(" OK ");
okButton.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
if (setButton.getSelection()) {
if (newUidNumber == null) {
action = SET;
} else {
action = CHANGE;
}
uidNumber = new Integer(newUidNumberText.getText());
} else {
action = REMOVE;
uidNumber = origUidNumber;
}
message = "".equals(messageText.getText()) ? null : messageText.getText();
shell.close();
}
});
return composite;
}
public int getAction() {
return action;
}
public void setAction(int action) {
this.action = action;
}
public Object getNewUidNumber() {
return newUidNumber;
}
public void setNewUidNumber(Object newUidNumber) {
this.newUidNumber = newUidNumber;
}
public Object getUidNumber() {
return uidNumber;
}
public void setUidNumber(Object uidNumber) {
this.uidNumber = uidNumber;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public String getDomain() {
return domain;
}
public void setDomain(String domain) {
this.domain = domain;
}
public String getUid() {
return uid;
}
public void setUid(String uid) {
this.uid = uid;
}
public Object getOrigUidNumber() {
return origUidNumber;
}
public void setOrigUidNumber(Object origUidNumber) {
this.origUidNumber = origUidNumber;
}
}