KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > directory > ldapstudio > browser > ui > views > browser > DropListener


1 /*
2  * Licensed to the Apache Software Foundation (ASF) under one
3  * or more contributor license agreements. See the NOTICE file
4  * distributed with this work for additional information
5  * regarding copyright ownership. The ASF licenses this file
6  * to you under the Apache License, Version 2.0 (the
7  * "License"); you may not use this file except in compliance
8  * with the License. You may obtain a copy of the License at
9  *
10  * http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing,
13  * software distributed under the License is distributed on an
14  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15  * KIND, either express or implied. See the License for the
16  * specific language governing permissions and limitations
17  * under the License.
18  *
19  */

20
21 package org.apache.directory.ldapstudio.browser.ui.views.browser;
22
23 import org.eclipse.swt.dnd.DropTargetListener;
24
25
26 /**
27  * This class implements the {@link DropTargetListener} for the browser view.
28  *
29  * TODO: The code isn't working yet, just a test implementation.
30  *
31  * @author <a HREF="mailto:dev@directory.apache.org">Apache Directory Project</a>
32  * @version $Rev$, $Date$
33  */

34 public class DropListener /* implements DropTargetListener, ModelModifier */
35 {/*
36  *
37  * private Shell shell; private Clipboard systemClipboard; private
38  * InternalClipboard internalClipboard;
39  *
40  *
41  * public DropListener(Shell shell, Clipboard systemClipboard,
42  * InternalClipboard internalClipboard) { this.shell = shell;
43  * this.systemClipboard = systemClipboard; this.internalClipboard =
44  * internalClipboard;
45  * } public void dispose() { this.shell = null; this.systemClipboard =
46  * null; this.internalClipboard = null;
47  * }
48  *
49  * private int dragOperation = DND.DROP_NONE;
50  *
51  * public void dragEnter(DropTargetEvent event) {
52  * //System.out.println("dragEnter: " + event.detail); dragOperation =
53  * event.detail; event.currentDataType =
54  * BrowserTransfer.getInstance().getSupportedTypes()[0];
55  * this.check(event); }
56  *
57  * public void dragLeave(DropTargetEvent event) {
58  * //System.out.println("dragLeave: " + event.detail); dragOperation =
59  * DND.DROP_NONE; }
60  *
61  * public void dragOperationChanged(DropTargetEvent event) {
62  * //System.out.println("dragOperationChanged: " + event.detail);
63  * dragOperation = event.detail; this.check(event); }
64  *
65  * public void dragOver(DropTargetEvent event) {
66  * //System.out.println("dragOver: " + event.item.getData());
67  *
68  * this.check(event);
69  *
70  * //System.out.println("dragOver: " + event.detail);
71  *
72  * //System.out.println();
73  * //System.out.println(event.item.getClass().getName());
74  * //System.out.println(event.item.getData().getClass().getName());
75  * //System.out.println(event.currentDataType.type); }
76  *
77  * private void check(DropTargetEvent event) { if(event.item != null &&
78  * event.item.getData() != null) { if
79  * (BrowserTransfer.getInstance().isSupportedType(event.currentDataType)) {
80  * if(event.item.getData() instanceof ISearch &&
81  * this.internalClipboard.getObjectToTransfer() instanceof ISearch[]) {
82  * event.detail = dragOperation; return; } else if(event.item.getData()
83  * instanceof BrowserCategory &&
84  * ((BrowserCategory)event.item.getData()).getType() ==
85  * BrowserCategory.TYPE_SEARCHES &&
86  * this.internalClipboard.getObjectToTransfer() instanceof ISearch[]) {
87  * event.detail = dragOperation; return; } else if(event.item.getData()
88  * instanceof IEntry && this.internalClipboard.getObjectToTransfer()
89  * instanceof IEntry[]) { event.detail = dragOperation;
90  *
91  * IEntry[] entries =
92  * (IEntry[])this.internalClipboard.getObjectToTransfer(); for(int i=0;
93  * i<entries.length; i++) { if(entries[i].hasChildren()) { event.detail =
94  * DND.DROP_COPY; return; } }
95  *
96  * return; } else if(event.item.getData() instanceof IEntry &&
97  * this.internalClipboard.getObjectToTransfer() instanceof
98  * ISearchResult[]) { event.detail = dragOperation;
99  *
100  * ISearchResult[] srs =
101  * (ISearchResult[])this.internalClipboard.getObjectToTransfer();
102  * for(int i=0; i<srs.length; i++) {
103  * if(!srs[i].getEntry().hasChildren()) { event.detail = DND.DROP_COPY;
104  * return; } }
105  *
106  * return; } else { event.detail = DND.DROP_NONE; } } else {
107  * event.detail = DND.DROP_NONE; } } else { event.detail =
108  * DND.DROP_NONE; } }
109  *
110  * public void drop(DropTargetEvent event) {
111  *
112  * //System.out.println("drop: " + event);
113  *
114  * try {
115  *
116  * if
117  * (BrowserTransfer.getInstance().isSupportedType(event.currentDataType) &&
118  * event.data instanceof String &&
119  * this.internalClipboard.getClass().getName().equals(event.data)) {
120  *
121  * if(event.detail == DND.DROP_MOVE) {
122  * this.internalClipboard.setOperationType(InternalClipboard.TYPE_MOVE_OPERATION); }
123  * else if(event.detail == DND.DROP_COPY) {
124  * this.internalClipboard.setOperationType(InternalClipboard.TYPE_DUPLICATE_OPERATION); }
125  * else {
126  * this.internalClipboard.setOperationType(InternalClipboard.TYPE_UNKNOWN); }
127  *
128  *
129  * ISearch[] selectedSearches = new ISearch[0]; IEntry[] selectedEntries =
130  * new IEntry[0]; ISearchResult[] selectedSearchResults = new
131  * ISearchResult[0]; BrowserCategory[] selectedBrowserViewCategories =
132  * new BrowserCategory[0];
133  *
134  * if (event.item != null && event.item.getData() instanceof ISearch) {
135  * selectedSearches = new ISearch[]{(ISearch) event.item.getData()}; }
136  * else if (event.item != null && event.item.getData() instanceof
137  * IEntry) { selectedEntries = new IEntry[]{(IEntry)
138  * event.item.getData()}; } else if (event.item != null &&
139  * event.item.getData() instanceof ISearchResult) {
140  * selectedSearchResults = new ISearchResult[]{(ISearchResult)
141  * event.item.getData()}; } else if (event.item != null &&
142  * event.item.getData() instanceof BrowserCategory) {
143  * selectedBrowserViewCategories = new
144  * BrowserCategory[]{(BrowserCategory) event.item.getData()}; }
145  *
146  * this.runPaste(this.internalClipboard, selectedSearches,
147  * selectedEntries, selectedSearchResults,
148  * selectedBrowserViewCategories);
149  *
150  *
151  * // // get search to handle and its search manager // ISearch[]
152  * searches = (ISearch[]) event.data; // for(int i=0; i<searches.length;
153  * i++) { // ISearch search = searches[i]; // IConnection connection =
154  * search.getConnection(); // SearchManager dragSearchManager =
155  * connection.getSearchManager(); // // // get position // //int
156  * position = dragSearchManager.indexOf(search); // // // get drop
157  * search manager and drop position, // // default is last and the drop
158  * search // int dropPosition = -1; // SearchManager dropSearchManager =
159  * null; // if (event.item != null && event.item.getData() instanceof
160  * ISearch) { // ISearch dropSearch = (ISearch) event.item.getData(); //
161  * dropSearchManager = dropSearch.getConnection().getSearchManager(); //
162  * dropPosition = dropSearchManager.indexOf(dropSearch); // } else { //
163  * dropSearchManager = this.selectedConnection.getSearchManager(); //
164  * dropPosition = dropSearchManager.getSearchCount(); // } // if
165  * (dropPosition == -1) { // dropSearchManager = dragSearchManager; //
166  * dropPosition = dragSearchManager.getSearchCount(); // } // // // if
167  * MOVE operation, first remove from old position // if (event.detail ==
168  * DND.DROP_MOVE && dragSearchManager == dropSearchManager) { //
169  * dragSearchManager.removeSearch(search); //
170  * if(dropPosition>dragSearchManager.getSearchCount()) { //
171  * dropPosition--; // } // dropSearchManager.addSearch(dropPosition,
172  * search); // event.detail = DND.DROP_NONE; // // } else if
173  * (event.detail == DND.DROP_COPY || // (event.detail == DND.DROP_MOVE &&
174  * dragSearchManager != dropSearchManager)) { // ISearch newSearch =
175  * (ISearch) search.clone(); //
176  * newSearch.setConnection(dropSearchManager.getConnection()); //
177  * dropSearchManager.addSearch(dropPosition, newSearch); // // } // else { //
178  * event.detail = DND.DROP_NONE; // } // } } } catch (Exception e) {
179  * event.detail = DND.DROP_NONE; e.printStackTrace(); }
180  * }
181  *
182  * public void dropAccept(DropTargetEvent event) {
183  * //System.out.println("dropAccept: " + event.detail + event.feedback);
184  * event.currentDataType =
185  * BrowserTransfer.getInstance().getSupportedTypes()[0]; check(event); }
186  *
187  *
188  *
189  *
190  * public void runPaste(InternalClipboard internalClipboard, ISearch[]
191  * selectedSearches, IEntry[] selectedEntries, ISearchResult[]
192  * selectedSearchResults, BrowserCategory[]
193  * selectedBrowserViewCategories) { Object objectToTransfer =
194  * internalClipboard.getObjectToTransfer();
195  *
196  * if (objectToTransfer != null && objectToTransfer instanceof ISearch[] &&
197  * selectedSearches.length > 0 && selectedEntries.length == 0 &&
198  * selectedSearchResults.length == 0) { ISearch[] searchesToTransfer =
199  * (ISearch[]) objectToTransfer; if (searchesToTransfer != null &&
200  * searchesToTransfer.length > 0) { ISearch pasteSearch =
201  * selectedSearches[selectedSearches.length-1]; IConnection connection =
202  * pasteSearch.getConnection(); SearchManager searchManager =
203  * connection.getSearchManager();
204  *
205  * int index = searchManager.indexOf(pasteSearch);
206  *
207  * for(int i=0; i<searchesToTransfer.length; i++) { ISearch newSearch =
208  * (ISearch) searchesToTransfer[i].clone();
209  * newSearch.setConnection(connection);
210  * if(internalClipboard.getOperationType() ==
211  * InternalClipboard.TYPE_DUPLICATE_OPERATION) {
212  * searchManager.addSearch(index+1+i, newSearch); } else
213  * if(internalClipboard.getOperationType() ==
214  * InternalClipboard.TYPE_MOVE_OPERATION) {
215  * searchesToTransfer[i].getConnection().getSearchManager().removeSearch(searchesToTransfer[i].getName());
216  * searchManager.addSearch(index+i, newSearch);
217  * if(searchManager.indexOf(pasteSearch) < index) { index =
218  * searchManager.indexOf(pasteSearch); } } } } } else if
219  * (objectToTransfer != null && objectToTransfer instanceof ISearch[] &&
220  * selectedBrowserViewCategories.length == 1 &&
221  * selectedBrowserViewCategories[0].getType()==BrowserCategory.TYPE_SEARCHES) {
222  * ISearch[] searchesToTransfer = (ISearch[]) objectToTransfer; if
223  * (searchesToTransfer != null && searchesToTransfer.length > 0) {
224  * IConnection connection =
225  * selectedBrowserViewCategories[0].getParent(); SearchManager
226  * searchManager = connection.getSearchManager(); for(int i=0; i<searchesToTransfer.length;
227  * i++) { ISearch newSearch = (ISearch) searchesToTransfer[i].clone();
228  * newSearch.setConnection(connection);
229  * if(internalClipboard.getOperationType() ==
230  * InternalClipboard.TYPE_DUPLICATE_OPERATION) {
231  * searchManager.addSearch(searchManager.getSearchCount(), newSearch); }
232  * else if(internalClipboard.getOperationType() ==
233  * InternalClipboard.TYPE_MOVE_OPERATION) {
234  * searchesToTransfer[i].getConnection().getSearchManager().removeSearch(searchesToTransfer[i].getName());
235  * searchManager.addSearch(searchManager.getSearchCount(), newSearch); } } } }
236  * else if (objectToTransfer != null && objectToTransfer instanceof
237  * IEntry[] && selectedEntries.length == 1 && selectedSearches.length ==
238  * 0 && selectedSearchResults.length == 0) { IEntry[] entries =
239  * (IEntry[]) objectToTransfer; if (entries != null && entries.length >
240  * 0) { if(internalClipboard.getOperationType() ==
241  * InternalClipboard.TYPE_DUPLICATE_OPERATION) new
242  * CopyEntriesJob(selectedEntries[0], entries).execute(); else
243  * if(internalClipboard.getOperationType() ==
244  * InternalClipboard.TYPE_MOVE_OPERATION) this.move(selectedEntries[0],
245  * entries); } } else if (objectToTransfer != null && objectToTransfer
246  * instanceof ISearchResult[] && selectedEntries.length == 1 &&
247  * selectedSearches.length == 0 && selectedSearchResults.length == 0) {
248  * ISearchResult[] searchResults = (ISearchResult[]) objectToTransfer;
249  * IEntry[] entries = new IEntry[searchResults.length]; for(int i=0; i<searchResults.length;
250  * i++) { entries[i] = searchResults[i].getEntry(); } if (entries !=
251  * null && entries.length > 0) { if(internalClipboard.getOperationType() ==
252  * InternalClipboard.TYPE_DUPLICATE_OPERATION) new
253  * CopyEntriesJob(selectedEntries[0], entries).execute(); else
254  * if(internalClipboard.getOperationType() ==
255  * InternalClipboard.TYPE_MOVE_OPERATION) this.move(selectedEntries[0],
256  * entries); } }
257  *
258  * if(internalClipboard.getOperationType() ==
259  * InternalClipboard.TYPE_MOVE_OPERATION) { internalClipboard.clear(); } }
260  *
261  * private void move (final IEntry newParent, final IEntry[]
262  * entriesToMove) {
263  *
264  * for(int i=0; i<entriesToMove.length; i++) { try {
265  * entriesToMove[i].moveTo(newParent, this); }
266  * catch(ModelModificationException mme) {
267  * BrowserUIPlugin.getDefault().getExceptionHandler().handleException(mme.getMessage(),
268  * mme); } catch(Exception e) {
269  * BrowserUIPlugin.getDefault().getExceptionHandler().handleException(e.getMessage(),
270  * e); } }
271  *
272  * //EventRegistry.fireEntryUpdated(new
273  * ChildrenInitializedEvent(newParent, newParent.getConnection()),
274  * this); }
275  */

276 }
277
Popular Tags