/** * This implementation of <code>dragOver</code> provides a default drag under effect for the * feedback specified in <code>event.feedback</code>. The class description lists the FEEDBACK * constants that are applicable to the class. * * <p>For additional information see <code>DropTargetAdapter.dragOver</code>. * * <p>Subclasses that override this method should call <code>super.dragOver(event)</code> to get * the default drag under effect implementation. * * @param event the information associated with the drag over event * @see DropTargetAdapter * @see DropTargetEvent * @see DND#FEEDBACK_SELECT * @see DND#FEEDBACK_SCROLL */ public void dragOver(DropTargetEvent event) { Table table = (Table) control; long /*int*/ handle = table.handle; int effect = checkEffect(event.feedback); Point coordinates = new Point(event.x, event.y); coordinates = table.toControl(coordinates); long /*int*/[] path = new long /*int*/[1]; OS.gtk_tree_view_get_path_at_pos(handle, coordinates.x, coordinates.y, path, null, null, null); int index = -1; if (path[0] != 0) { long /*int*/ indices = OS.gtk_tree_path_get_indices(path[0]); if (indices != 0) { int[] temp = new int[1]; OS.memmove(temp, indices, 4); index = temp[0]; } } if ((effect & DND.FEEDBACK_SCROLL) == 0) { scrollBeginTime = 0; scrollIndex = -1; } else { if (index != -1 && scrollIndex == index && scrollBeginTime != 0) { if (System.currentTimeMillis() >= scrollBeginTime) { if (coordinates.y < table.getItemHeight()) { OS.gtk_tree_path_prev(path[0]); } else { OS.gtk_tree_path_next(path[0]); } if (path[0] != 0) { OS.gtk_tree_view_scroll_to_cell(handle, path[0], 0, false, 0, 0); OS.gtk_tree_path_free(path[0]); path[0] = 0; OS.gtk_tree_view_get_path_at_pos( handle, coordinates.x, coordinates.y, path, null, null, null); } scrollBeginTime = 0; scrollIndex = -1; } } else { scrollBeginTime = System.currentTimeMillis() + SCROLL_HYSTERESIS; scrollIndex = index; } } if (path[0] != 0) { int position = 0; if ((effect & DND.FEEDBACK_SELECT) != 0) position = OS.GTK_TREE_VIEW_DROP_INTO_OR_BEFORE; // if ((effect & DND.FEEDBACK_INSERT_BEFORE) != 0) position = OS.GTK_TREE_VIEW_DROP_BEFORE; // if ((effect & DND.FEEDBACK_INSERT_AFTER) != 0) position = OS.GTK_TREE_VIEW_DROP_AFTER; if (position != 0) { OS.gtk_tree_view_set_drag_dest_row(handle, path[0], OS.GTK_TREE_VIEW_DROP_INTO_OR_BEFORE); } else { OS.gtk_tree_view_set_drag_dest_row(handle, 0, OS.GTK_TREE_VIEW_DROP_BEFORE); } } else { OS.gtk_tree_view_set_drag_dest_row(handle, 0, OS.GTK_TREE_VIEW_DROP_BEFORE); } if (path[0] != 0) OS.gtk_tree_path_free(path[0]); }
public void show(int effect, int x, int y) { effect = checkEffect(effect); int handle = table.handle; Point coordinates = new Point(x, y); coordinates = table.toControl(coordinates); LVHITTESTINFO pinfo = new LVHITTESTINFO(); pinfo.x = coordinates.x; pinfo.y = coordinates.y; OS.SendMessage(handle, OS.LVM_HITTEST, 0, pinfo); if ((effect & DND.FEEDBACK_SCROLL) == 0) { scrollBeginTime = 0; scrollIndex = -1; } else { if (pinfo.iItem != -1 && scrollIndex == pinfo.iItem && scrollBeginTime != 0) { if (System.currentTimeMillis() >= scrollBeginTime) { int top = Math.max(0, OS.SendMessage(handle, OS.LVM_GETTOPINDEX, 0, 0)); int count = OS.SendMessage(handle, OS.LVM_GETITEMCOUNT, 0, 0); int index = (scrollIndex - 1 < top) ? Math.max(0, scrollIndex - 1) : Math.min(count - 1, scrollIndex + 1); OS.SendMessage(handle, OS.LVM_ENSUREVISIBLE, index, 0); scrollBeginTime = 0; scrollIndex = -1; } } else { scrollBeginTime = System.currentTimeMillis() + SCROLL_HYSTERESIS; scrollIndex = pinfo.iItem; } } LVITEM lvItem = new LVITEM(); lvItem.stateMask = OS.LVIS_DROPHILITED; OS.SendMessage(handle, OS.LVM_SETITEMSTATE, -1, lvItem); if (pinfo.iItem != -1 && (effect & DND.FEEDBACK_SELECT) != 0) { lvItem.state = OS.LVIS_DROPHILITED; OS.SendMessage(handle, OS.LVM_SETITEMSTATE, pinfo.iItem, lvItem); } // Insert mark only supported on Windows XP with manifest // if (OS.COMCTL32_MAJOR >= 6) { // if ((effect & DND.FEEDBACK_INSERT_BEFORE) != 0 || (effect & DND.FEEDBACK_INSERT_AFTER) != 0) // { // LVINSERTMARK lvinsertmark = new LVINSERTMARK(); // lvinsertmark.cbSize = LVINSERTMARK.sizeof; // lvinsertmark.dwFlags = (effect & DND.FEEDBACK_INSERT_BEFORE) != 0 ? 0 : OS.LVIM_AFTER; // lvinsertmark.iItem = pinfo.iItem == -1 ? 0 : pinfo.iItem; // int hItem = pinfo.iItem; // OS.SendMessage (handle, OS.LVM_SETINSERTMARK, 0, lvinsertmark); // } else { // OS.SendMessage (handle, OS.LVM_SETINSERTMARK, 0, 0); // } // } return; }
// -------------------------------------------------------------------------------- private void onSashResize() { if (System.currentTimeMillis() >= initializedTime + 3000) { prop.setProperty(DOCUMENT_COMPOSITE_WEIGHT, sashForm.getWeights()); } }
// -------------------------------------------------------------------------------- public void init2() { parent.setLayout(new FormLayout()); sashForm = new SashForm(parent, SWT.SMOOTH | SWT.VERTICAL); FormData fd_sashForm1 = new FormData(); fd_sashForm1.top = new FormAttachment(0, 1); fd_sashForm1.left = new FormAttachment(0, 1); fd_sashForm1.right = new FormAttachment(100, -1); fd_sashForm1.bottom = new FormAttachment(100, -1); sashForm.setLayoutData(fd_sashForm1); tree = new Tree(sashForm, SWT.BORDER | SWT.FULL_SELECTION); tree.setHeaderVisible(true); FormData d1 = new FormData(); d1.top = new FormAttachment(0, 1); d1.left = new FormAttachment(0, 1); d1.right = new FormAttachment(100, -1); d1.bottom = new FormAttachment(100, -1); tree.setLayoutData(d1); TreeColumn column1 = new TreeColumn(tree, SWT.LEFT); TreeColumn column2 = new TreeColumn(tree, SWT.LEFT); column2.setText("Data Type"); editorComposite = new Composite(sashForm, SWT.BORDER); editorComposite.addControlListener( new ControlAdapter() { public void controlResized(ControlEvent e) { onSashResize(); } }); FormData fd_composite1 = new FormData(); fd_composite1.top = new FormAttachment(0, 1); fd_composite1.bottom = new FormAttachment(0, 35); fd_composite1.right = new FormAttachment(100, -1); fd_composite1.left = new FormAttachment(0, 1); editorComposite.setLayoutData(fd_composite1); editorComposite.setLayout(new FormLayout()); Label nameLabel = new Label(editorComposite, SWT.NONE); FormData fd_nameLabel = new FormData(); fd_nameLabel.right = new FormAttachment(0, 66); fd_nameLabel.bottom = new FormAttachment(0, 32); fd_nameLabel.top = new FormAttachment(0, 12); fd_nameLabel.left = new FormAttachment(0, 10); nameLabel.setLayoutData(fd_nameLabel); nameLabel.setText("Name :"); Label valueLabel = new Label(editorComposite, SWT.NONE); FormData fd_valueLabel = new FormData(); fd_valueLabel.top = new FormAttachment(nameLabel, 15); fd_valueLabel.left = new FormAttachment(0, 10); fd_valueLabel.bottom = new FormAttachment(nameLabel, 34, SWT.BOTTOM); fd_valueLabel.right = new FormAttachment(nameLabel, 0, SWT.RIGHT); valueLabel.setLayoutData(fd_valueLabel); valueLabel.setText("Value :"); valueText = new Text( editorComposite, SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL | SWT.CANCEL | SWT.MULTI); valueText.addModifyListener( new ModifyListener() { public void modifyText(ModifyEvent e) { verifyData(); } }); valueText.setEnabled(false); valueText.setEditable(false); FormData fd_valueText = new FormData(); fd_valueText.top = new FormAttachment(nameLabel, 5); fd_valueText.bottom = new FormAttachment(100, -80); fd_valueText.right = new FormAttachment(100, -20); fd_valueText.left = new FormAttachment(valueLabel, 0, SWT.RIGHT); valueText.setLayoutData(fd_valueText); updateButton = new Button(editorComposite, SWT.NONE); updateButton.addSelectionListener( new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { onUpdateButtonSelect(); } }); updateButton.setEnabled(false); FormData fd_updateButton = new FormData(); fd_updateButton.left = new FormAttachment(100, -120); fd_updateButton.right = new FormAttachment(valueText, 0, SWT.RIGHT); updateButton.setLayoutData(fd_updateButton); updateButton.setText("Update"); typeCombo = new Combo(editorComposite, SWT.READ_ONLY); fd_updateButton.top = new FormAttachment(typeCombo, 10); typeCombo.setEnabled(false); FormData fd_typeList = new FormData(); fd_typeList.left = new FormAttachment(valueText, 0, SWT.LEFT); fd_typeList.top = new FormAttachment(valueText, 5, SWT.BOTTOM); // fd_typeList.bottom = new FormAttachment(valueText, 30, SWT.BOTTOM); fd_typeList.right = new FormAttachment(valueText, 170, SWT.LEFT); typeCombo.setLayoutData(fd_typeList); typeCombo.add("Double"); typeCombo.add("Integer"); typeCombo.add("Long"); typeCombo.add("String"); typeCombo.add("List (BasicDBList)"); typeCombo.add("Map (BasicDBObject)"); typeCombo.add("Date"); typeCombo.add("ObjectId"); typeCombo.add("JavaScript code"); typeCombo.add("Binary data"); typeCombo.add("Boolean"); typeCombo.add("Null"); typeCombo.add("Regular expression"); typeCombo.add("Symbol"); typeCombo.add("JavaScript code with scope"); typeCombo.add("Timestamp"); typeCombo.add("Min key"); typeCombo.add("Max key"); typeCombo.addListener(SWT.Selection, this); typeComboIndexMap.put(Double.class, new Integer(0)); typeComboIndexMap.put(Integer.class, new Integer(1)); typeComboIndexMap.put(Long.class, new Integer(2)); typeComboIndexMap.put(String.class, new Integer(3)); typeComboIndexMap.put(com.mongodb.BasicDBList.class, new Integer(4)); typeComboIndexMap.put(com.mongodb.BasicDBObject.class, new Integer(5)); typeComboIndexMap.put(java.util.Date.class, new Integer(6)); typeComboIndexMap.put(org.bson.types.ObjectId.class, new Integer(7)); typeComboIndexMap.put(org.bson.types.Code.class, new Integer(8)); typeComboIndexMap.put(byte[].class, new Integer(9)); typeComboIndexMap.put(Boolean.class, new Integer(10)); typeComboIndexMap.put(java.util.regex.Pattern.class, new Integer(12)); typeComboIndexMap.put(org.bson.types.Symbol.class, new Integer(13)); typeComboIndexMap.put(org.bson.types.CodeWScope.class, new Integer(14)); typeComboIndexMap.put(org.bson.types.BSONTimestamp.class, new Integer(15)); typeComboIndexMap.put(org.bson.types.MinKey.class, new Integer(16)); typeComboIndexMap.put(org.bson.types.MaxKey.class, new Integer(17)); Label typeLabel = new Label(editorComposite, SWT.NONE); FormData fd_typeLabel = new FormData(); fd_typeLabel.top = new FormAttachment(typeCombo, 3, SWT.TOP); fd_typeLabel.left = new FormAttachment(nameLabel, 0, SWT.LEFT); typeLabel.setLayoutData(fd_typeLabel); typeLabel.setText("Type :"); nameText = new Text(editorComposite, SWT.READ_ONLY); nameText.setBackground(SWTResourceManager.getColor(SWT.COLOR_WIDGET_BACKGROUND)); FormData fd_nameText = new FormData(); fd_nameText.top = new FormAttachment(nameLabel, -2, SWT.TOP); fd_nameText.left = new FormAttachment(valueText, 0, SWT.LEFT); fd_nameText.right = new FormAttachment(valueText, 0, SWT.RIGHT); nameText.setLayoutData(fd_nameText); MSwtUtil.getTreeColumnWidthFromProperties("documentTree", tree, prop, new int[] {150, 150}); // listeners tree.addListener(SWT.MouseDoubleClick, this); tree.addListener(SWT.Selection, this); tree.addListener(SWT.KeyDown, this); MSwtUtil.addListenerToTreeColumns2(tree, this); documentImage = MUtil.getImage(parent.getShell().getDisplay(), "table.png"); oidImage = MUtil.getImage(parent.getShell().getDisplay(), "bullet_star.png"); intImage = MUtil.getImage(parent.getShell().getDisplay(), "bullet_blue.png"); longImage = MUtil.getImage(parent.getShell().getDisplay(), "bullet_red.png"); doubleImage = MUtil.getImage(parent.getShell().getDisplay(), "bullet_orange.png"); stringImage = MUtil.getImage(parent.getShell().getDisplay(), "bullet_green.png"); dateImage = MUtil.getImage(parent.getShell().getDisplay(), "bullet_white.png"); boolImage = MUtil.getImage(parent.getShell().getDisplay(), "bullet_yellow.png"); listImage = MUtil.getImage(parent.getShell().getDisplay(), "stop_blue.png"); mapImage = MUtil.getImage(parent.getShell().getDisplay(), "stop_green.png"); nullImage = MUtil.getImage(parent.getShell().getDisplay(), "bullet_black.png"); jsImage = MUtil.getImage(parent.getShell().getDisplay(), "bullet_right.png"); if (prop.containsKey(DOCUMENT_COMPOSITE_WEIGHT)) { (new Thread() { public void run() { // System.out.println( "e" ); MSystemUtil.sleep(0); // System.out.println( "a" ); shell .getDisplay() .asyncExec( new Runnable() { public void run() { // ---- // debug( "--" + prop.getIntArrayProperty( DOCUMENT_COMPOSITE_WEIGHT )[ 0 // ] ); sashForm.setWeights(prop.getIntArrayProperty(DOCUMENT_COMPOSITE_WEIGHT)); } }); // ---- } }) .start(); } else { sashForm.setWeights(new int[] {70, 30}); } initializedTime = System.currentTimeMillis(); }