]> git.argeo.org Git - gpl/argeo-slc.git/blob - plugins/org.argeo.slc.akb.ui/src/main/java/org/argeo/slc/akb/ui/dialogs/AddItemDialog.java
Edit connector wizard
[gpl/argeo-slc.git] / plugins / org.argeo.slc.akb.ui / src / main / java / org / argeo / slc / akb / ui / dialogs / AddItemDialog.java
1 package org.argeo.slc.akb.ui.dialogs;
2
3 import javax.jcr.Node;
4 import javax.jcr.Property;
5 import javax.jcr.RepositoryException;
6
7 import org.argeo.slc.akb.AkbException;
8 import org.argeo.slc.akb.AkbTypes;
9 import org.eclipse.jface.dialogs.TrayDialog;
10 import org.eclipse.swt.SWT;
11 import org.eclipse.swt.graphics.Point;
12 import org.eclipse.swt.layout.GridData;
13 import org.eclipse.swt.layout.GridLayout;
14 import org.eclipse.swt.widgets.Combo;
15 import org.eclipse.swt.widgets.Composite;
16 import org.eclipse.swt.widgets.Control;
17 import org.eclipse.swt.widgets.Label;
18 import org.eclipse.swt.widgets.Shell;
19 import org.eclipse.swt.widgets.Text;
20
21 /**
22 * Dialog to create a new Item Template
23 */
24 public class AddItemDialog extends TrayDialog {
25
26 // this page widgets and UI objects
27 private final String title;
28
29 private String[] itemTypesLbl = new String[] { "SSH File", "SSH Command",
30 "JDBC Query" };
31 private String[] itemTypes = new String[] { AkbTypes.AKB_SSH_FILE,
32 AkbTypes.AKB_SSH_COMMAND, AkbTypes.AKB_JDBC_QUERY };
33
34 // business objects
35 private Node parentNode;
36 private Node newNode;
37
38 // widget objects
39 private Combo typeCmb;
40 private Text titleTxt;
41
42 public AddItemDialog(Shell parentShell, String title, Node parentNode) {
43 super(parentShell);
44 this.title = title;
45 this.parentNode = parentNode;
46 }
47
48 protected Point getInitialSize() {
49 return new Point(400, 300);
50 }
51
52 protected Control createDialogArea(Composite parent) {
53 Composite dialogArea = (Composite) super.createDialogArea(parent);
54 dialogArea.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
55
56 dialogArea.setLayout(new GridLayout(2, false));
57 // type
58 Label lbl = new Label(dialogArea, SWT.NONE);
59 lbl.setText("Item type");
60 typeCmb = new Combo(dialogArea, SWT.READ_ONLY);
61 typeCmb.setItems(itemTypesLbl);
62 // name
63 titleTxt = createLT(dialogArea, "Item Name");
64
65 parent.pack();
66 return dialogArea;
67 }
68
69 @Override
70 protected void okPressed() {
71 try {
72 newNode = parentNode.addNode(titleTxt.getText(),
73 itemTypes[typeCmb.getSelectionIndex()]);
74 newNode.setProperty(Property.JCR_TITLE, titleTxt.getText());
75 } catch (RepositoryException e) {
76 throw new AkbException("unable to create Item", e);
77 }
78 super.okPressed();
79 }
80
81 public Node getNewNode() {
82 return newNode;
83 }
84
85 /** Creates label and text. */
86 protected Text createLT(Composite parent, String label) {
87 new Label(parent, SWT.NONE).setText(label);
88 Text text = new Text(parent, SWT.SINGLE | SWT.LEAD | SWT.BORDER);
89 text.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false));
90 return text;
91 }
92
93 protected void configureShell(Shell shell) {
94 super.configureShell(shell);
95 shell.setText(title);
96 }
97 }