]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.ui/src/org/simantics/ui/selection/ResourceWorkbenchSelectionElement.java
Provide classifications and datatype for Variable-based drag sources
[simantics/platform.git] / bundles / org.simantics.ui / src / org / simantics / ui / selection / ResourceWorkbenchSelectionElement.java
1 package org.simantics.ui.selection;
2
3 import org.simantics.db.Resource;
4 import org.simantics.db.common.utils.Logger;
5 import org.simantics.db.exception.DatabaseException;
6 import org.simantics.db.layer0.request.ResourceVariable;
7
8 public class ResourceWorkbenchSelectionElement implements WorkbenchSelectionElement {
9
10     final private Resource resource;
11
12     public ResourceWorkbenchSelectionElement(Resource resource) {
13         this.resource = resource;
14     }
15
16     @SuppressWarnings("unchecked")
17     @Override
18     public <T> T getContent(WorkbenchSelectionContentType<T> contentType) {
19         if(contentType instanceof AnyResource) {
20             return (T)resource;
21         } else if(contentType instanceof AnyVariable) {
22             AnyVariable type = (AnyVariable)contentType;
23             try {
24                 return (T) type.processor.sync(new ResourceVariable(resource));
25             } catch (DatabaseException e) {
26                 Logger.defaultLogError(e);
27             }
28         }
29         return null;
30     }
31
32     @Override
33     public int hashCode() {
34         return resource.hashCode();
35     }
36
37     @Override
38     public boolean equals(Object object) {
39         if (this == object)
40             return true;
41         else if (object == null)
42             return false;
43         else if (!(object instanceof ResourceWorkbenchSelectionElement))
44             return false;
45         ResourceWorkbenchSelectionElement vwse = (ResourceWorkbenchSelectionElement)object;
46         return resource.equals(vwse.resource);
47     }
48
49 }