2 * Copyright 2015 Samsung Electronics All Rights Reserved.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
17 package oic.simulator.clientcontroller.view;
19 import org.eclipse.jface.viewers.ColumnLabelProvider;
20 import org.eclipse.jface.viewers.IStructuredContentProvider;
21 import org.eclipse.jface.viewers.TableViewer;
22 import org.eclipse.jface.viewers.TableViewerColumn;
23 import org.eclipse.jface.viewers.Viewer;
24 import org.eclipse.swt.SWT;
25 import org.eclipse.swt.custom.CTabFolder;
26 import org.eclipse.swt.custom.CTabItem;
27 import org.eclipse.swt.graphics.Color;
28 import org.eclipse.swt.layout.GridData;
29 import org.eclipse.swt.layout.GridLayout;
30 import org.eclipse.swt.widgets.Composite;
31 import org.eclipse.swt.widgets.Display;
32 import org.eclipse.swt.widgets.Group;
33 import org.eclipse.swt.widgets.Table;
34 import org.eclipse.ui.part.ViewPart;
36 import java.util.List;
38 import oic.simulator.clientcontroller.Activator;
39 import oic.simulator.clientcontroller.listener.IDevicePlatformInfoUIListener;
40 import oic.simulator.clientcontroller.listener.IResourceSelectionChangedUIListener;
41 import oic.simulator.clientcontroller.manager.ResourceManager;
42 import oic.simulator.clientcontroller.manager.UiListenerHandler;
43 import oic.simulator.clientcontroller.remoteresource.MetaProperty;
44 import oic.simulator.clientcontroller.remoteresource.RemoteResource;
47 * This class manages and shows the meta properties view in the perspective.
49 public class MetaPropertiesView extends ViewPart {
51 public static final String VIEW_ID = "oic.simulator.clientcontroller.view.metaproperties";
53 private TableViewer defaultTblViewer;
54 private TableViewer deviceTblViewer;
55 private TableViewer platformTblViewer;
57 private final String[] columnHeaders = { "Property",
60 private final Integer[] columnWidth = { 150, 150 };
62 private IResourceSelectionChangedUIListener resourceSelectionChangedListener;
63 private IDevicePlatformInfoUIListener devicePlatformInfoUIListener;
65 private ResourceManager resourceManager;
67 private CTabFolder folder;
68 private CTabItem defaultPropTab;
69 private CTabItem devicePropTab;
70 private CTabItem platformPropTab;
72 public MetaPropertiesView() {
74 resourceManager = Activator.getDefault().getResourceManager();
76 resourceSelectionChangedListener = new IResourceSelectionChangedUIListener() {
79 public void onResourceSelectionChange(final RemoteResource resource) {
80 Display.getDefault().asyncExec(new Runnable() {
90 devicePlatformInfoUIListener = new IDevicePlatformInfoUIListener() {
93 public void onPlatformInfoFound() {
94 Display.getDefault().asyncExec(new Runnable() {
98 if (null != platformTblViewer) {
99 updateViewer(platformTblViewer,
100 getPlatformPropData());
108 public void onDeviceInfoFound() {
109 Display.getDefault().asyncExec(new Runnable() {
113 if (null != deviceTblViewer) {
114 updateViewer(deviceTblViewer, getDevicePropData());
122 private void updateUI(final RemoteResource resource) {
123 if (null != defaultTblViewer) {
124 updateViewer(defaultTblViewer, getDefaultPropData(resource));
126 if (null != deviceTblViewer) {
127 updateViewer(deviceTblViewer, getDevicePropData());
129 if (null != platformTblViewer) {
130 updateViewer(platformTblViewer, getPlatformPropData());
135 public void createPartControl(Composite parent) {
136 parent.setLayout(new GridLayout());
137 GridData gd = new GridData(SWT.FILL, SWT.FILL, true, true);
138 parent.setLayoutData(gd);
140 // Create a Tab Folder.
141 folder = new CTabFolder(parent, SWT.BORDER);
142 gd = new GridData(SWT.FILL, SWT.FILL, true, true);
143 folder.setLayoutData(gd);
144 folder.setSimple(false);
145 folder.setUnselectedCloseVisible(false);
146 folder.setUnselectedImageVisible(false);
148 createDefaultPropertiesTab();
150 createDevicePropertiesTab();
152 createPlatformPropertiesTab();
154 folder.setSelection(defaultPropTab);
156 addManagerListeners();
158 // Check whether there is any resource selected already
162 private void createDefaultPropertiesTab() {
163 defaultPropTab = new CTabItem(folder, SWT.NULL);
164 defaultPropTab.setText("Default");
166 // Adding the group to the folder.
167 Group propGroup = new Group(folder, SWT.NONE);
169 Color color = Display.getDefault().getSystemColor(SWT.COLOR_WHITE);
170 propGroup.setBackground(color);
172 propGroup.setLayout(new GridLayout());
173 GridData gd = new GridData(SWT.FILL, SWT.FILL, true, true);
174 propGroup.setLayoutData(gd);
176 defaultTblViewer = new TableViewer(propGroup, SWT.SINGLE | SWT.H_SCROLL
177 | SWT.V_SCROLL | SWT.FULL_SELECTION | SWT.BORDER);
179 createColumns(defaultTblViewer);
181 // Make lines and header visible
182 final Table table = defaultTblViewer.getTable();
183 table.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
184 table.setHeaderVisible(true);
185 table.setLinesVisible(true);
187 defaultTblViewer.setContentProvider(new PropertycontentProvider());
189 defaultPropTab.setControl(propGroup);
192 private void createDevicePropertiesTab() {
193 devicePropTab = new CTabItem(folder, SWT.NULL);
194 devicePropTab.setText("Device");
196 // Adding the group to the folder.
197 Group propGroup = new Group(folder, SWT.NONE);
199 Color color = Display.getDefault().getSystemColor(SWT.COLOR_WHITE);
200 propGroup.setBackground(color);
202 propGroup.setLayout(new GridLayout());
203 GridData gd = new GridData(SWT.FILL, SWT.FILL, true, true);
204 propGroup.setLayoutData(gd);
206 deviceTblViewer = new TableViewer(propGroup, SWT.SINGLE | SWT.H_SCROLL
207 | SWT.V_SCROLL | SWT.FULL_SELECTION | SWT.BORDER);
209 createColumns(deviceTblViewer);
211 // Make lines and header visible
212 final Table table = deviceTblViewer.getTable();
213 table.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
214 table.setHeaderVisible(true);
215 table.setLinesVisible(true);
217 deviceTblViewer.setContentProvider(new PropertycontentProvider());
219 devicePropTab.setControl(propGroup);
222 private void createPlatformPropertiesTab() {
223 platformPropTab = new CTabItem(folder, SWT.NULL);
224 platformPropTab.setText("Platform");
226 // Adding the group to the folder.
227 Group propGroup = new Group(folder, SWT.NONE);
229 Color color = Display.getDefault().getSystemColor(SWT.COLOR_WHITE);
230 propGroup.setBackground(color);
232 propGroup.setLayout(new GridLayout());
233 GridData gd = new GridData(SWT.FILL, SWT.FILL, true, true);
234 propGroup.setLayoutData(gd);
236 platformTblViewer = new TableViewer(propGroup, SWT.SINGLE
237 | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION | SWT.BORDER);
239 createColumns(platformTblViewer);
241 // Make lines and header visible
242 final Table table = platformTblViewer.getTable();
243 table.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
244 table.setHeaderVisible(true);
245 table.setLinesVisible(true);
247 platformTblViewer.setContentProvider(new PropertycontentProvider());
249 platformPropTab.setControl(propGroup);
252 private List<MetaProperty> getDefaultPropData(RemoteResource resource) {
253 if (null == resource) {
254 resource = Activator.getDefault().getResourceManager()
255 .getCurrentResourceInSelection();
257 List<MetaProperty> metaPropertyList = resourceManager
258 .getDefaultProperties(resource);
259 return metaPropertyList;
262 private List<MetaProperty> getDevicePropData() {
263 List<MetaProperty> metaPropertyList = resourceManager
264 .getDeviceProperties();
265 return metaPropertyList;
268 private List<MetaProperty> getPlatformPropData() {
269 List<MetaProperty> metaPropertyList = resourceManager
270 .getPlatformProperties();
271 return metaPropertyList;
274 private void updateViewer(TableViewer tblViewer,
275 List<MetaProperty> metaPropertyList) {
276 if (null != tblViewer) {
277 Table tbl = tblViewer.getTable();
278 if (null != metaPropertyList) {
279 tblViewer.setInput(metaPropertyList.toArray());
280 if (!tbl.isDisposed()) {
281 tbl.setLinesVisible(true);
284 if (!tbl.isDisposed()) {
286 tbl.setLinesVisible(false);
292 public void createColumns(TableViewer tableViewer) {
293 TableViewerColumn propName = new TableViewerColumn(tableViewer,
295 propName.getColumn().setWidth(columnWidth[0]);
296 propName.getColumn().setText(columnHeaders[0]);
297 propName.setLabelProvider(new ColumnLabelProvider() {
299 public String getText(Object element) {
300 MetaProperty prop = (MetaProperty) element;
302 return prop.getPropName();
309 TableViewerColumn propValue = new TableViewerColumn(tableViewer,
311 propValue.getColumn().setWidth(columnWidth[1]);
312 propValue.getColumn().setText(columnHeaders[1]);
313 propValue.setLabelProvider(new ColumnLabelProvider() {
315 public String getText(Object element) {
316 MetaProperty prop = (MetaProperty) element;
318 return prop.getPropValue();
326 private void addManagerListeners() {
327 UiListenerHandler.getInstance().addResourceSelectionChangedUIListener(
328 resourceSelectionChangedListener);
329 UiListenerHandler.getInstance().addDevicePlatformInfoUIListener(
330 devicePlatformInfoUIListener);
333 private static class PropertycontentProvider implements
334 IStructuredContentProvider {
337 public void dispose() {
341 public void inputChanged(Viewer arg0, Object arg1, Object arg2) {
345 public Object[] getElements(Object element) {
346 return (Object[]) element;
351 public void dispose() {
352 // Unregister the listener
353 if (null != resourceSelectionChangedListener) {
354 UiListenerHandler.getInstance()
355 .removeResourceSelectionChangedUIListener(
356 resourceSelectionChangedListener);
362 public void setFocus() {