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