1 package org.terracotta.dso.views; 2 3 import org.eclipse.jface.action.IMenuListener; 4 import org.eclipse.jface.action.MenuManager; 5 import org.eclipse.jface.viewers.ISelectionProvider; 6 import org.eclipse.jface.viewers.TreeViewer; 7 import org.eclipse.swt.SWT; 8 import org.eclipse.swt.events.KeyListener; 9 import org.eclipse.swt.layout.GridData; 10 import org.eclipse.swt.widgets.Composite; 11 import org.eclipse.swt.widgets.Menu; 12 import org.eclipse.swt.widgets.Tree; 13 import org.eclipse.ui.IWorkbenchPartSite; 14 15 import com.terracottatech.config.TcConfigDocument.TcConfig; 16 17 class ConfigViewer extends TreeViewer { 18 private ConfigViewPart fPart; 19 private ConfigContentProvider fContentProvider; 20 21 ConfigViewer(Composite parent, ConfigViewPart part) { 22 super(new Tree(parent, SWT.MULTI)); 23 24 fPart = part; 25 26 getControl().setLayoutData(new GridData(GridData.FILL_BOTH)); 27 setUseHashlookup(true); 28 setAutoExpandLevel(ALL_LEVELS); 29 fContentProvider = new ConfigContentProvider(fPart); 30 setContentProvider(fContentProvider); 31 setLabelProvider(new ConfigLabelProvider(this)); 32 33 clearViewer(); 34 } 35 36 void setConfig(TcConfig config) { 37 if(config != null) { 38 setInput(getTreeRoot(config)); 39 } else { 40 clearViewer(); 41 } 42 } 43 44 ConfigViewPart getPart() { 45 return fPart; 46 } 47 48 void setFocus() { 49 getControl().setFocus(); 50 } 51 52 boolean isInFocus() { 53 return getControl().isFocusControl(); 54 } 55 56 void addKeyListener(KeyListener keyListener) { 57 getControl().addKeyListener(keyListener); 58 } 59 60 private TreeRoot getTreeRoot(TcConfig root) { 61 return new TreeRoot(root); 62 } 63 64 void initContextMenu(IMenuListener menuListener, IWorkbenchPartSite viewSite, ISelectionProvider selectionProvider) { 65 MenuManager menuMgr= new MenuManager(); 66 menuMgr.setRemoveAllWhenShown(true); 67 menuMgr.addMenuListener(menuListener); 68 Menu menu= menuMgr.createContextMenu(getTree()); 69 getTree().setMenu(menu); 70 viewSite.registerContextMenu(menuMgr, selectionProvider); 71 } 72 73 void clearViewer() { 74 setInput(TreeRoot.EMPTY_ROOT); 75 } 76 } 77
| Popular Tags
|