Base layout of eclipse plugin for service provider.
[platform/upstream/iotivity.git] / service / simulator / java / eclipse-plugin / ServiceProviderPlugin / src / oic / simulator / serviceprovider / view / dialogs / DeleteResourcePage.java
1 package oic.simulator.serviceprovider.view.dialogs;
2
3 import java.util.Iterator;
4 import java.util.List;
5
6 import oic.simulator.serviceprovider.Activator;
7
8 import org.eclipse.jface.wizard.WizardPage;
9 import org.eclipse.swt.SWT;
10 import org.eclipse.swt.custom.CCombo;
11 import org.eclipse.swt.events.ModifyEvent;
12 import org.eclipse.swt.events.ModifyListener;
13 import org.eclipse.swt.events.SelectionAdapter;
14 import org.eclipse.swt.events.SelectionEvent;
15 import org.eclipse.swt.layout.GridData;
16 import org.eclipse.swt.layout.GridLayout;
17 import org.eclipse.swt.widgets.Button;
18 import org.eclipse.swt.widgets.Composite;
19 import org.eclipse.swt.widgets.Group;
20 import org.eclipse.swt.widgets.Text;
21
22 public class DeleteResourcePage extends WizardPage {
23
24     private Button         allRbtn;
25     private Button         byTypeRbtn;
26     private Button         byUriRbtn;
27
28     private CCombo         resourceTypeCmb;
29     private Text           resourceUriTxt;
30
31     private DeleteCategory deleteCategory;
32
33     // It will hold either the resource type or resource uri
34     private String         deleteCandidate;
35
36     protected DeleteResourcePage() {
37         super("Delete Resource");
38     }
39
40     @Override
41     public void createControl(Composite parent) {
42         System.out.println("delete wizard open");
43         setPageComplete(false);
44         setTitle("Delete Resource");
45         setMessage("Select the resource(s) to be deleted");
46
47         Composite compContent = new Composite(parent, SWT.NONE);
48         compContent.setLayout(new GridLayout(1, false));
49         GridData gd = new GridData(SWT.FILL, SWT.FILL, true, true);
50         compContent.setLayoutData(gd);
51
52         Group group = new Group(compContent, SWT.NONE);
53         group.setText("Select Category");
54         GridLayout gridLayout = new GridLayout(2, false);
55         gridLayout.verticalSpacing = 15;
56         gridLayout.marginTop = 10;
57         gridLayout.marginLeft = 10;
58         group.setLayout(gridLayout);
59         gd = new GridData(SWT.FILL, SWT.FILL, true, true);
60         group.setLayoutData(gd);
61
62         allRbtn = new Button(group, SWT.RADIO);
63         allRbtn.setText("All resources");
64         gd = new GridData();
65         gd.horizontalSpan = 2;
66         gd.widthHint = 200;
67         allRbtn.setLayoutData(gd);
68
69         byTypeRbtn = new Button(group, SWT.RADIO);
70         byTypeRbtn.setText("All (By resource type)");
71         gd = new GridData();
72         gd.widthHint = 200;
73         byTypeRbtn.setLayoutData(gd);
74
75         resourceTypeCmb = new CCombo(group, SWT.READ_ONLY | SWT.BORDER);
76         gd = new GridData();
77         gd.widthHint = 200;
78         resourceTypeCmb.setLayoutData(gd);
79
80         byUriRbtn = new Button(group, SWT.RADIO);
81         byUriRbtn.setText("By Resource URI");
82         gd = new GridData();
83         gd.widthHint = 200;
84         byUriRbtn.setLayoutData(gd);
85
86         resourceUriTxt = new Text(group, SWT.BORDER);
87         gd = new GridData();
88         gd.widthHint = 300;
89         resourceUriTxt.setLayoutData(gd);
90
91         // Setting the initial visibility of controls
92         allRbtn.setSelection(false);
93         byTypeRbtn.setSelection(false);
94         byUriRbtn.setSelection(false);
95
96         resourceTypeCmb.setEnabled(false);
97         resourceUriTxt.setEnabled(false);
98
99         deleteCategory = DeleteCategory.NONE;
100
101         populateDataInUI();
102
103         addUIListeners();
104
105         setControl(compContent);
106     }
107
108     private void populateDataInUI() {
109         // Populate Resourcetype in Combo
110         populateResourceTypeCombo();
111     }
112
113     private void populateResourceTypeCombo() {
114
115         List<String> resourceTypeList;
116         resourceTypeList = Activator.getManager().getResourceTypeList();
117         if (null != resourceTypeList) {
118             Iterator<String> itr = resourceTypeList.iterator();
119             while (itr.hasNext()) {
120                 resourceTypeCmb.add(itr.next());
121             }
122         }
123
124         // By default, select the first item in the combo
125         if (resourceTypeCmb.getItemCount() > 0) {
126             resourceTypeCmb.select(0);
127             deleteCandidate = resourceTypeCmb.getItem(resourceTypeCmb
128                     .getSelectionIndex());
129         }
130     }
131
132     public void addUIListeners() {
133         allRbtn.addSelectionListener(new SelectionAdapter() {
134             @Override
135             public void widgetSelected(SelectionEvent e) {
136                 // Update the visibility of controls
137                 resourceTypeCmb.setEnabled(false);
138                 resourceUriTxt.setEnabled(false);
139
140                 deleteCategory = DeleteCategory.ALL;
141                 deleteCandidate = null;
142                 setPageComplete(isSelectionDone());
143             }
144         });
145
146         byTypeRbtn.addSelectionListener(new SelectionAdapter() {
147             @Override
148             public void widgetSelected(SelectionEvent e) {
149                 // Update the visibility of controls
150                 resourceTypeCmb.setEnabled(true);
151                 resourceUriTxt.setEnabled(false);
152
153                 deleteCategory = DeleteCategory.BY_TYPE;
154                 setPageComplete(isSelectionDone());
155             }
156         });
157
158         byUriRbtn.addSelectionListener(new SelectionAdapter() {
159             @Override
160             public void widgetSelected(SelectionEvent e) {
161                 // Update the visibility of controls
162                 resourceUriTxt.setEnabled(true);
163                 resourceTypeCmb.setEnabled(false);
164
165                 deleteCategory = DeleteCategory.BY_URI;
166                 setPageComplete(isSelectionDone());
167             }
168         });
169
170         resourceTypeCmb.addModifyListener(new ModifyListener() {
171             @Override
172             public void modifyText(ModifyEvent arg0) {
173                 setPageComplete(isSelectionDone());
174             }
175         });
176
177         resourceUriTxt.addModifyListener(new ModifyListener() {
178             @Override
179             public void modifyText(ModifyEvent arg0) {
180                 setPageComplete(isSelectionDone());
181             }
182         });
183     }
184
185     public boolean isSelectionDone() {
186         boolean done = false;
187         if (deleteCategory == DeleteCategory.ALL) {
188             done = true;
189         } else if (deleteCategory == DeleteCategory.BY_TYPE) {
190             int selectedItemIndex = resourceTypeCmb.getSelectionIndex();
191             if (selectedItemIndex >= 0) {
192                 deleteCandidate = resourceTypeCmb.getItem(selectedItemIndex);
193                 if (null != deleteCandidate && deleteCandidate.length() > 0) {
194                     done = true;
195                 }
196             }
197         } else if (deleteCategory == DeleteCategory.BY_URI) {
198             deleteCandidate = resourceUriTxt.getText();
199             if (null != deleteCandidate && deleteCandidate.length() > 0) {
200                 done = true;
201             }
202         }
203         return done;
204     }
205
206     public DeleteCategory getDeleteCategory() {
207         return deleteCategory;
208     }
209
210     public String getDeleteCandidate() {
211         return deleteCandidate;
212     }
213
214     public void setFocusToTextBox() {
215         resourceUriTxt.setFocus();
216     }
217 }