1 package oic.simulator.serviceprovider.view;
3 import java.util.Iterator;
6 import oic.simulator.serviceprovider.Activator;
7 import oic.simulator.serviceprovider.listener.IResourceListChangedListener;
8 import oic.simulator.serviceprovider.manager.ResourceManager;
9 import oic.simulator.serviceprovider.utils.Convertion;
10 import oic.simulator.serviceprovider.view.dialogs.CreateResourceWizard;
11 import oic.simulator.serviceprovider.view.dialogs.DeleteCategory;
12 import oic.simulator.serviceprovider.view.dialogs.DeleteResourceWizard;
13 import oic.simulator.serviceprovider.view.dialogs.ResourceWizardDialog;
15 import org.eclipse.jface.wizard.WizardDialog;
16 import org.eclipse.swt.SWT;
17 import org.eclipse.swt.events.SelectionAdapter;
18 import org.eclipse.swt.events.SelectionEvent;
19 import org.eclipse.swt.graphics.Color;
20 import org.eclipse.swt.layout.GridData;
21 import org.eclipse.swt.layout.GridLayout;
22 import org.eclipse.swt.widgets.Button;
23 import org.eclipse.swt.widgets.Composite;
24 import org.eclipse.swt.widgets.Display;
25 import org.eclipse.swt.widgets.Group;
26 import org.eclipse.swt.widgets.Tree;
27 import org.eclipse.swt.widgets.TreeItem;
28 import org.eclipse.ui.PlatformUI;
29 import org.eclipse.ui.part.ViewPart;
31 public class ResourceManagerView extends ViewPart {
33 public static final String VIEW_ID = "oic.simulator.serviceprovider.view.resourcemanager";
35 private Button createButton;
36 private Button deleteButton;
38 private Tree resourceTreeHead;
40 private IResourceListChangedListener resourceListChangedListener;
42 public ResourceManagerView() {
43 resourceListChangedListener = new IResourceListChangedListener() {
46 public void onResourceCreation(String resourceType,
47 List<String> resourceURI) {
48 if (null != resourceTreeHead
49 && !(resourceTreeHead.isDisposed())
50 && null != resourceType && null != resourceURI) {
51 TreeItem resourceHead = null;
52 TreeItem[] items = resourceTreeHead.getItems();
54 for (TreeItem item : items) {
55 if (item.getText().equals(resourceType)) {
60 if (null == resourceHead) {
61 // Adding a new tree header
62 resourceHead = new TreeItem(resourceTreeHead,
64 resourceHead.setText(resourceType);
66 // Add resources under the resourceHead
67 Iterator<String> uriItr = resourceURI.iterator();
68 while (uriItr.hasNext()) {
69 TreeItem newItem = new TreeItem(resourceHead,
71 newItem.setText(Convertion.uriToDisplayName(uriItr
79 public void onResourceDeletion(String resourceType,
81 if (null != resourceTreeHead
82 && !(resourceTreeHead.isDisposed())) {
83 TreeItem targetParent = null;
84 TreeItem[] headItems = resourceTreeHead.getItems();
85 if (null != headItems) {
86 for (TreeItem item : headItems) {
87 if (item.getText().equals(resourceType)) {
92 if (null != targetParent) {
93 TreeItem[] items = targetParent.getItems();
94 for (TreeItem item : items) {
95 if (item.getText().equals(
97 .uriToDisplayName(resourceURI))) {
99 if (targetParent.getItemCount() < 1) {
100 targetParent.dispose();
111 public void onResourceDeletionByType(String resourceType) {
112 if (null != resourceTreeHead
113 && !(resourceTreeHead.isDisposed())) {
114 TreeItem items[] = resourceTreeHead.getItems();
115 for (TreeItem item : items) {
116 if (item.getText().equals(resourceType)) {
124 public void onAllResourceDeletion() {
125 if (null != resourceTreeHead
126 && !(resourceTreeHead.isDisposed())) {
127 TreeItem[] items = resourceTreeHead.getItems();
129 for (TreeItem item : items) {
139 public void createPartControl(Composite parent) {
140 Composite compContent = new Composite(parent, SWT.NONE);
141 GridLayout baseLayout = new GridLayout(1, false);
142 compContent.setLayout(baseLayout);
144 GridData gd = new GridData(SWT.FILL, SWT.FILL, true, true);
145 compContent.setLayoutData(gd);
147 Composite buttonComp = new Composite(compContent, SWT.NONE);
148 buttonComp.setLayout(new GridLayout(2, false));
151 gd.horizontalAlignment = SWT.FILL;
152 gd.grabExcessHorizontalSpace = true;
154 buttonComp.setLayoutData(gd);
156 createButton = new Button(buttonComp, SWT.PUSH);
157 createButton.setText("Create");
158 createButton.setToolTipText("Create Simulator Resource(s)");
162 createButton.setLayoutData(gd);
164 deleteButton = new Button(buttonComp, SWT.PUSH);
165 deleteButton.setText("Delete");
166 deleteButton.setToolTipText("Delete Simulator Resource(s)");
170 deleteButton.setLayoutData(gd);
172 Group resourceGroup = new Group(compContent, SWT.NONE);
173 resourceGroup.setText("Created Resources");
175 Color color = Display.getDefault().getSystemColor(SWT.COLOR_WHITE);
176 resourceGroup.setBackground(color);
178 resourceGroup.setLayout(new GridLayout(1, false));
179 gd = new GridData(SWT.FILL, SWT.FILL, true, true);
180 resourceGroup.setLayoutData(gd);
182 resourceTreeHead = new Tree(resourceGroup, SWT.SINGLE);
184 gd = new GridData(SWT.FILL, SWT.FILL, true, true);
186 resourceTreeHead.setLayoutData(gd);
190 addManagerListeners();
193 private void addUIListeners() {
195 createButton.addSelectionListener(new SelectionAdapter() {
197 public void widgetSelected(SelectionEvent e) {
198 PlatformUI.getWorkbench().getDisplay().syncExec(new Runnable() {
202 CreateResourceWizard createWizard = new CreateResourceWizard();
203 ResourceWizardDialog wizardDialog = new ResourceWizardDialog(
204 PlatformUI.getWorkbench().getDisplay()
205 .getActiveShell(), createWizard);
206 int open = wizardDialog.open();
207 if (open == WizardDialog.OK) {
208 String configFilePath;
210 configFilePath = createWizard.getConfigFilePath();
211 count = createWizard.getResourceCount();
213 // Create the resource
214 if (null != configFilePath
215 && configFilePath.length() > 0) {
217 // Single resource creation
218 // TODO: Temporary code to show the resource
220 Activator.getManager().createResource(
223 // Multi resource creation
224 // Activator.getDefault().getManager().createResource(configFilePath,
234 deleteButton.addSelectionListener(new SelectionAdapter() {
236 public void widgetSelected(SelectionEvent e) {
237 PlatformUI.getWorkbench().getDisplay().syncExec(new Runnable() {
241 DeleteResourceWizard deleteWizard = new DeleteResourceWizard();
242 ResourceWizardDialog wizardDialog = new ResourceWizardDialog(
243 PlatformUI.getWorkbench().getDisplay()
244 .getActiveShell(), deleteWizard);
245 int open = wizardDialog.open();
246 if (open == WizardDialog.OK) {
247 if (deleteWizard.getDeleteCategory() == DeleteCategory.BY_URI) {
248 String uri = deleteWizard.getDeleteCandidate();
249 boolean completeURI = Convertion
252 uri = Convertion.displayNameToUri(uri);
254 Activator.getManager().deleteResourceByURI(uri);
255 } else if (deleteWizard.getDeleteCategory() == DeleteCategory.BY_TYPE) {
256 Activator.getManager().deleteResourceByType(
257 deleteWizard.getDeleteCandidate());
258 } else if (deleteWizard.getDeleteCategory() == DeleteCategory.ALL) {
259 Activator.getManager().deleteAllResources();
268 resourceTreeHead.addSelectionListener(new SelectionAdapter() {
270 public void widgetSelected(SelectionEvent e) {
271 TreeItem[] selectedItems = resourceTreeHead.getSelection();
272 // Handling only single item selection events
273 if (1 == selectedItems.length) {
274 String selectedItem = selectedItems[0].getText();
275 // Check whether the selected item is a resource category or
276 // a specific resource
277 boolean category = isSelectedTreeItemACategory(selectedItem);
279 // TODO: Show the properties in the properties view
287 private boolean isSelectedTreeItemACategory(String selectedItem) {
288 boolean category = false;
289 TreeItem[] items = resourceTreeHead.getItems();
291 for (TreeItem item : items) {
292 if (item.getText().equals(selectedItem)) {
301 public void addManagerListeners() {
302 ResourceManager manager = Activator.getManager();
303 manager.setResourceListChangedListener(resourceListChangedListener);
307 public void setFocus() {
308 // TODO Auto-generated method stub