KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > terracotta > dso > views > ConfigTransferDropAdapter


1 /*
2  * All content copyright (c) 2003-2006 Terracotta, Inc., except as may otherwise be noted in a separate copyright notice. All rights reserved.
3  */

4 package org.terracotta.dso.views;
5
6 import org.eclipse.core.resources.IProject;
7 import org.eclipse.jdt.core.IClassFile;
8 import org.eclipse.jdt.core.ICompilationUnit;
9 import org.eclipse.jdt.core.IField;
10 import org.eclipse.jdt.core.IJavaElement;
11 import org.eclipse.jdt.core.IMethod;
12 import org.eclipse.jdt.core.IType;
13 import org.eclipse.jdt.core.JavaModelException;
14 import org.eclipse.jdt.internal.ui.packageview.SelectionTransferDropAdapter;
15 import org.eclipse.jdt.internal.ui.util.SelectionUtil;
16 import org.eclipse.jface.dialogs.MessageDialog;
17 import org.eclipse.jface.viewers.ISelection;
18 import org.eclipse.jface.viewers.StructuredViewer;
19 import org.eclipse.swt.dnd.DND;
20 import org.eclipse.swt.dnd.DropTargetEvent;
21 import org.eclipse.swt.widgets.Display;
22 import org.eclipse.swt.widgets.Shell;
23 import org.terracotta.dso.TcPlugin;
24
25 class ConfigTransferDropAdapter extends SelectionTransferDropAdapter {
26   private static final int OPERATION = DND.DROP_LINK;
27   private ConfigViewPart fPart;
28
29   public ConfigTransferDropAdapter(ConfigViewPart viewPart, StructuredViewer viewer) {
30     super(viewer);
31     setFullWidthMatchesItem(false);
32     fPart = viewPart;
33   }
34
35   public void validateDrop(Object JavaDoc target, DropTargetEvent event, int operation) {
36     event.detail= DND.DROP_NONE;
37     initializeSelection();
38     
39     IJavaElement inputElement = getInputElement(getSelection());
40     if (inputElement != null) {
41       switch(inputElement.getElementType()) {
42         case IJavaElement.FIELD:
43           if(target instanceof RootsWrapper ||
44              target instanceof RootWrapper ||
45              target instanceof TransientFieldsWrapper ||
46              target instanceof TransientFieldWrapper) {
47             event.detail = OPERATION;
48           }
49           break;
50         case IJavaElement.PACKAGE_DECLARATION:
51         case IJavaElement.PACKAGE_FRAGMENT:
52           if(target instanceof AutolocksWrapper ||
53              target instanceof AutolockWrapper ||
54              target instanceof NamedLocksWrapper ||
55              target instanceof NamedLockWrapper ||
56              target instanceof IncludesWrapper ||
57              target instanceof IncludeWrapper ||
58              target instanceof ExcludesWrapper ||
59              target instanceof ExcludeWrapper) {
60             event.detail = OPERATION;
61           }
62           break;
63         case IJavaElement.METHOD:
64           if(target instanceof DistributedMethodsWrapper ||
65              target instanceof DistributedMethodWrapper ||
66              target instanceof AutolocksWrapper ||
67              target instanceof AutolockWrapper ||
68              target instanceof NamedLocksWrapper ||
69              target instanceof NamedLockWrapper) {
70             event.detail = OPERATION;
71           }
72           break;
73         case IJavaElement.CLASS_FILE:
74         case IJavaElement.COMPILATION_UNIT:
75         case IJavaElement.TYPE:
76           if(target instanceof AdditionalBootJarClassesWrapper ||
77              target instanceof AutolocksWrapper ||
78              target instanceof AutolockWrapper ||
79              target instanceof NamedLocksWrapper ||
80              target instanceof NamedLockWrapper ||
81              target instanceof IncludesWrapper ||
82              target instanceof IncludeWrapper ||
83              target instanceof ExcludesWrapper ||
84              target instanceof ExcludeWrapper) {
85             event.detail = OPERATION;
86           }
87           break;
88       }
89     }
90   }
91   
92   public boolean isEnabled(DropTargetEvent event) {
93     return true;
94   }
95
96   public void drop(Object JavaDoc target, DropTargetEvent event) {
97     IJavaElement input = getInputElement(getSelection());
98     IProject project = input.getJavaProject().getProject();
99     TcPlugin plugin = TcPlugin.getDefault();
100     
101     if(plugin.getConfiguration(project) == TcPlugin.BAD_CONFIG) {
102       Shell shell = Display.getDefault().getActiveShell();
103       String JavaDoc title = "Terracotta Plugin";
104       String JavaDoc msg = "The configuration source is not parsable and cannot be\n used until these errors are resolved.";
105       
106       MessageDialog.openWarning(shell, title, msg);
107       try {
108         plugin.openConfigurationEditor(project);
109       } catch(Exception JavaDoc e) {
110         // TODO:
111
}
112       return;
113     }
114
115     switch(input.getElementType()) {
116       case IJavaElement.FIELD:
117         if(target instanceof RootsWrapper ||
118            target instanceof RootWrapper) {
119           fPart.addRoot((IField)input);
120         } else if(target instanceof TransientFieldsWrapper ||
121                   target instanceof TransientFieldWrapper) {
122           fPart.addTransientField((IField)input);
123         }
124         break;
125       case IJavaElement.PACKAGE_DECLARATION:
126       case IJavaElement.PACKAGE_FRAGMENT:
127         if(target instanceof AutolocksWrapper ||
128            target instanceof AutolockWrapper) {
129           fPart.addAutolock(input);
130         } else if(target instanceof NamedLocksWrapper ||
131                   target instanceof NamedLockWrapper) {
132           fPart.addNamedLock(input);
133         } else if(target instanceof IncludesWrapper ||
134                   target instanceof IncludeWrapper) {
135           fPart.addInclude(input);
136         } else if(target instanceof ExcludesWrapper ||
137                   target instanceof ExcludeWrapper) {
138           fPart.addExclude(input);
139         }
140         break;
141       case IJavaElement.METHOD:
142         if(target instanceof DistributedMethodsWrapper ||
143            target instanceof DistributedMethodWrapper) {
144           fPart.addDistributedMethod((IMethod)input);
145         } else if(target instanceof AutolocksWrapper ||
146                   target instanceof AutolockWrapper) {
147           fPart.addAutolock(input);
148         } else if(target instanceof NamedLocksWrapper ||
149                   target instanceof NamedLockWrapper) {
150           fPart.addNamedLock(input);
151         }
152         break;
153       case IJavaElement.CLASS_FILE:
154         try {
155           if(target instanceof AdditionalBootJarClassesWrapper) {
156             fPart.addAdditionalBootJarClass(((IClassFile)input).getType());
157           } else if(target instanceof AutolocksWrapper ||
158                     target instanceof AutolockWrapper) {
159             fPart.addAutolock(input);
160           } else if(target instanceof NamedLocksWrapper ||
161                     target instanceof NamedLockWrapper) {
162             fPart.addNamedLock(input);
163           } else if(target instanceof IncludesWrapper ||
164                     target instanceof IncludeWrapper) {
165             fPart.addInclude(input);
166           } else if(target instanceof ExcludesWrapper ||
167                     target instanceof ExcludeWrapper) {
168             fPart.addExclude(input);
169           }
170         } catch(JavaModelException jme) {/**/}
171         break;
172       case IJavaElement.COMPILATION_UNIT:
173         if(target instanceof AdditionalBootJarClassesWrapper) {
174           fPart.addAdditionalBootJarClass(((ICompilationUnit)input).findPrimaryType());
175         } else if(target instanceof AutolocksWrapper ||
176                   target instanceof AutolockWrapper) {
177           fPart.addAutolock(input);
178         } else if(target instanceof NamedLocksWrapper ||
179                   target instanceof NamedLockWrapper) {
180           fPart.addNamedLock(input);
181         } else if(target instanceof IncludesWrapper ||
182                   target instanceof IncludeWrapper) {
183           fPart.addInclude(input);
184         } else if(target instanceof ExcludesWrapper ||
185                   target instanceof ExcludeWrapper) {
186           fPart.addExclude(input);
187         }
188         break;
189       case IJavaElement.TYPE:
190         if(target instanceof AdditionalBootJarClassesWrapper) {
191           fPart.addAdditionalBootJarClass((IType)input);
192         } else if(target instanceof AutolocksWrapper ||
193                   target instanceof AutolockWrapper) {
194           fPart.addAutolock(input);
195         } else if(target instanceof NamedLocksWrapper ||
196                   target instanceof NamedLockWrapper) {
197           fPart.addNamedLock(input);
198         } else if(target instanceof IncludesWrapper ||
199                   target instanceof IncludeWrapper) {
200           fPart.addInclude(input);
201         } else if(target instanceof ExcludesWrapper ||
202                   target instanceof ExcludeWrapper) {
203           fPart.addExclude(input);
204         }
205         break;
206     }
207   }
208   
209   private static IJavaElement getInputElement(ISelection selection) {
210     Object JavaDoc single = SelectionUtil.getSingleElement(selection);
211     if (single == null)
212       return null;
213     return getCandidate(single);
214   }
215     
216   public static IJavaElement getCandidate(Object JavaDoc input) {
217     if(!(input instanceof IJavaElement)) {
218       return null;
219     }
220     return (IJavaElement)input;
221   }
222 }
223
Popular Tags