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 / MetaPropertiesView.java
1 package oic.simulator.serviceprovider.view;
2
3 import java.util.List;
4
5 import oic.simulator.serviceprovider.Activator;
6 import oic.simulator.serviceprovider.listener.IResourceSelectionChangedUIListener;
7 import oic.simulator.serviceprovider.manager.ResourceManager;
8 import oic.simulator.serviceprovider.resource.MetaProperty;
9 import oic.simulator.serviceprovider.resource.SimulatorResource;
10
11 import org.eclipse.jface.viewers.ColumnLabelProvider;
12 import org.eclipse.jface.viewers.IStructuredContentProvider;
13 import org.eclipse.jface.viewers.TableViewer;
14 import org.eclipse.jface.viewers.TableViewerColumn;
15 import org.eclipse.jface.viewers.Viewer;
16 import org.eclipse.swt.SWT;
17 import org.eclipse.swt.layout.GridData;
18 import org.eclipse.swt.layout.GridLayout;
19 import org.eclipse.swt.widgets.Composite;
20 import org.eclipse.swt.widgets.Display;
21 import org.eclipse.swt.widgets.Table;
22 import org.eclipse.ui.part.ViewPart;
23
24 public class MetaPropertiesView extends ViewPart {
25
26     public static final String                  VIEW_ID       = "oic.simulator.serviceprovider.view.metaproperties";
27
28     private TableViewer                         tableViewer;
29
30     private final String[]                      columnHeaders = { "Property",
31             "Value"                                          };
32
33     private final Integer[]                     columnWidth   = { 150, 150 };
34
35     private IResourceSelectionChangedUIListener resourceSelectionChangedListener;
36
37     private ResourceManager                     resourceManagerRef;
38
39     public MetaPropertiesView() {
40
41         resourceManagerRef = Activator.getDefault().getResourceManager();
42
43         resourceSelectionChangedListener = new IResourceSelectionChangedUIListener() {
44
45             @Override
46             public void onResourceSelectionChange() {
47                 Display.getDefault().asyncExec(new Runnable() {
48
49                     @Override
50                     public void run() {
51                         if (null != tableViewer) {
52                             updateViewer(getData());
53                         }
54                     }
55                 });
56             }
57         };
58     }
59
60     @Override
61     public void createPartControl(Composite parent) {
62         parent.setLayout(new GridLayout(1, false));
63
64         tableViewer = new TableViewer(parent, SWT.SINGLE | SWT.H_SCROLL
65                 | SWT.V_SCROLL | SWT.FULL_SELECTION | SWT.BORDER);
66
67         createColumns(tableViewer);
68
69         // Make lines and header visible
70         final Table table = tableViewer.getTable();
71         table.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
72         table.setHeaderVisible(true);
73         table.setLinesVisible(true);
74
75         tableViewer.setContentProvider(new PropertycontentProvider());
76
77         addManagerListeners();
78
79         // Check whether there is any resource selected already
80         List<MetaProperty> propertyList = getData();
81         if (null != propertyList) {
82             updateViewer(propertyList);
83         }
84
85     }
86
87     private List<MetaProperty> getData() {
88         SimulatorResource resourceInSelection = resourceManagerRef
89                 .getCurrentResourceInSelection();
90         if (null != resourceInSelection) {
91             List<MetaProperty> metaPropertyList = resourceManagerRef
92                     .getMetaProperties(resourceInSelection);
93             return metaPropertyList;
94         } else {
95             return null;
96         }
97     }
98
99     private void updateViewer(List<MetaProperty> metaPropertyList) {
100         if (null != tableViewer) {
101             Table tbl = tableViewer.getTable();
102             if (null != metaPropertyList) {
103                 tableViewer.setInput(metaPropertyList.toArray());
104                 if (!tbl.isDisposed()) {
105                     tbl.setLinesVisible(true);
106                 }
107             } else {
108                 if (!tbl.isDisposed()) {
109                     tbl.removeAll();
110                     tbl.setLinesVisible(false);
111                 }
112             }
113         }
114     }
115
116     public void createColumns(TableViewer tableViewer) {
117         TableViewerColumn propName = new TableViewerColumn(tableViewer,
118                 SWT.NONE);
119         propName.getColumn().setWidth(columnWidth[0]);
120         propName.getColumn().setText(columnHeaders[0]);
121         propName.setLabelProvider(new ColumnLabelProvider() {
122             @Override
123             public String getText(Object element) {
124                 MetaProperty prop = (MetaProperty) element;
125                 if (null != prop) {
126                     return prop.getPropName();
127                 } else {
128                     return "";
129                 }
130             }
131         });
132
133         TableViewerColumn propValue = new TableViewerColumn(tableViewer,
134                 SWT.NONE);
135         propValue.getColumn().setWidth(columnWidth[1]);
136         propValue.getColumn().setText(columnHeaders[1]);
137         propValue.setLabelProvider(new ColumnLabelProvider() {
138             @Override
139             public String getText(Object element) {
140                 MetaProperty prop = (MetaProperty) element;
141                 if (null != prop) {
142                     return prop.getPropValue();
143                 } else {
144                     return "";
145                 }
146             }
147         });
148     }
149
150     private void addManagerListeners() {
151         resourceManagerRef
152                 .addResourceSelectionChangedUIListener(resourceSelectionChangedListener);
153     }
154
155     class PropertycontentProvider implements IStructuredContentProvider {
156
157         @Override
158         public void dispose() {
159         }
160
161         @Override
162         public void inputChanged(Viewer arg0, Object arg1, Object arg2) {
163         }
164
165         @Override
166         public Object[] getElements(Object element) {
167             return (Object[]) element;
168         }
169
170     }
171
172     @Override
173     public void dispose() {
174         // Unregister the listener
175         if (null != resourceSelectionChangedListener) {
176             resourceManagerRef
177                     .removeResourceSelectionChangedUIListener(resourceSelectionChangedListener);
178         }
179         super.dispose();
180     }
181
182     @Override
183     public void setFocus() {
184     }
185 }