1 package oic.simulator.serviceprovider.view;
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;
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;
24 public class MetaPropertiesView extends ViewPart {
26 public static final String VIEW_ID = "oic.simulator.serviceprovider.view.metaproperties";
28 private TableViewer tableViewer;
30 private final String[] columnHeaders = { "Property",
33 private final Integer[] columnWidth = { 150, 150 };
35 private IResourceSelectionChangedUIListener resourceSelectionChangedListener;
37 private ResourceManager resourceManager;
39 public MetaPropertiesView() {
41 resourceManager = Activator.getDefault().getResourceManager();
43 resourceSelectionChangedListener = new IResourceSelectionChangedUIListener() {
46 public void onResourceSelectionChange() {
47 Display.getDefault().asyncExec(new Runnable() {
51 if (null != tableViewer) {
52 updateViewer(checkSelection());
61 public void createPartControl(Composite parent) {
62 parent.setLayout(new GridLayout(1, false));
64 tableViewer = new TableViewer(parent, SWT.MULTI | SWT.H_SCROLL
65 | SWT.V_SCROLL | SWT.FULL_SELECTION | SWT.BORDER);
67 createColumns(tableViewer);
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);
75 tableViewer.setContentProvider(new PropertycontentProvider());
77 addManagerListeners();
79 // Check whether there is any resource selected already
80 List<MetaProperty> propertyList = checkSelection();
81 if (null != propertyList) {
82 updateViewer(propertyList);
87 private List<MetaProperty> checkSelection() {
88 SimulatorResource resourceInSelection = resourceManager
89 .getCurrentResourceInSelection();
90 if (null != resourceInSelection) {
91 List<MetaProperty> metaPropertyList = resourceManager
92 .getMetaProperties(resourceInSelection);
93 return metaPropertyList;
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);
108 if (!tbl.isDisposed()) {
110 tbl.setLinesVisible(false);
116 public void createColumns(TableViewer tableViewer) {
117 TableViewerColumn propName = new TableViewerColumn(tableViewer,
119 propName.getColumn().setWidth(columnWidth[0]);
120 propName.getColumn().setText(columnHeaders[0]);
121 propName.setLabelProvider(new ColumnLabelProvider() {
123 public String getText(Object element) {
124 MetaProperty prop = (MetaProperty) element;
126 return prop.getPropName();
133 TableViewerColumn propValue = new TableViewerColumn(tableViewer,
135 propValue.getColumn().setWidth(columnWidth[1]);
136 propValue.getColumn().setText(columnHeaders[1]);
137 propValue.setLabelProvider(new ColumnLabelProvider() {
139 public String getText(Object element) {
140 MetaProperty prop = (MetaProperty) element;
142 return prop.getPropValue();
150 private void addManagerListeners() {
152 .addResourceSelectionChangedUIListener(resourceSelectionChangedListener);
155 class PropertycontentProvider implements IStructuredContentProvider {
158 public void dispose() {
162 public void inputChanged(Viewer arg0, Object arg1, Object arg2) {
166 public Object[] getElements(Object element) {
167 return (Object[]) element;
173 public void dispose() {
174 // Unregister the listener
175 if (null != resourceSelectionChangedListener) {
177 .removeResourceSelectionChangedUIListener(resourceSelectionChangedListener);
183 public void setFocus() {