]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.browsing.ui.nattable/src/org/simantics/browsing/ui/nattable/override/DefaultTreeLayerConfiguration2.java
Sync git svn branch with SVN repository r33144.
[simantics/platform.git] / bundles / org.simantics.browsing.ui.nattable / src / org / simantics / browsing / ui / nattable / override / DefaultTreeLayerConfiguration2.java
1 /*******************************************************************************
2  * Copyright (c) Sep 7, 2012 Edwin Park and others.
3  * All rights reserved. This program and the accompanying materials
4  * are made available under the terms of the Eclipse Public License v1.0
5  * which accompanies this distribution, and is available at
6  * http://www.eclipse.org/legal/epl-v10.html
7  *
8  * Contributors:
9  *    Edwin Park - initial API and implementation
10  *******************************************************************************/
11 package org.simantics.browsing.ui.nattable.override;
12
13 import org.eclipse.nebula.widgets.nattable.config.CellConfigAttributes;
14 import org.eclipse.nebula.widgets.nattable.config.IConfigRegistry;
15 import org.eclipse.nebula.widgets.nattable.config.IConfiguration;
16 import org.eclipse.nebula.widgets.nattable.export.ExportConfigAttributes;
17 import org.eclipse.nebula.widgets.nattable.grid.GridRegion;
18 import org.eclipse.nebula.widgets.nattable.layer.ILayer;
19 import org.eclipse.nebula.widgets.nattable.style.CellStyleAttributes;
20 import org.eclipse.nebula.widgets.nattable.style.DisplayMode;
21 import org.eclipse.nebula.widgets.nattable.style.HorizontalAlignmentEnum;
22 import org.eclipse.nebula.widgets.nattable.style.Style;
23 import org.eclipse.nebula.widgets.nattable.tree.TreeLayer;
24 import org.eclipse.nebula.widgets.nattable.tree.action.TreeExpandCollapseAction;
25 import org.eclipse.nebula.widgets.nattable.tree.config.TreeExportFormatter;
26 import org.eclipse.nebula.widgets.nattable.tree.painter.TreeImagePainter;
27 import org.eclipse.nebula.widgets.nattable.ui.action.NoOpMouseAction;
28 import org.eclipse.nebula.widgets.nattable.ui.binding.UiBindingRegistry;
29 import org.eclipse.nebula.widgets.nattable.ui.matcher.CellPainterMouseEventMatcher;
30 import org.eclipse.nebula.widgets.nattable.ui.matcher.MouseEventMatcher;
31
32 /**
33  * @author Edwin Park
34  *
35  */
36 public class DefaultTreeLayerConfiguration2 implements IConfiguration {
37         
38         
39         private TreeLayer2 treeLayer;
40
41         /**
42          * 
43          */
44         public DefaultTreeLayerConfiguration2(TreeLayer2 treeLayer) {
45                 this.treeLayer = treeLayer;
46         }
47
48          @Override
49             public void configureLayer(ILayer layer) {}
50
51             @Override
52             public void configureRegistry(IConfigRegistry configRegistry) {
53                 configRegistry.registerConfigAttribute(CellConfigAttributes.CELL_STYLE,
54                         new Style() {
55                             {
56                                 setAttributeValue(
57                                         CellStyleAttributes.HORIZONTAL_ALIGNMENT,
58                                         HorizontalAlignmentEnum.LEFT);
59                             }
60                         }, DisplayMode.NORMAL, TreeLayer.TREE_COLUMN_CELL);
61                 configRegistry.registerConfigAttribute(
62                         ExportConfigAttributes.EXPORT_FORMATTER,
63                         new TreeExportFormatter(this.treeLayer.getModel()),
64                         DisplayMode.NORMAL, TreeLayer.TREE_COLUMN_CELL);
65             }
66
67             @Override
68             public void configureUiBindings(UiBindingRegistry uiBindingRegistry) {
69                 TreeExpandCollapseAction treeExpandCollapseAction = new TreeExpandCollapseAction();
70                 CellPainterMouseEventMatcher treeImagePainterMouseEventMatcher = new CellPainterMouseEventMatcher(
71                         GridRegion.BODY, MouseEventMatcher.LEFT_BUTTON,
72                         TreeImagePainter.class);
73
74                 uiBindingRegistry.registerFirstSingleClickBinding(
75                         treeImagePainterMouseEventMatcher, treeExpandCollapseAction);
76
77                 // Obscure any mouse down bindings for this image painter
78                 uiBindingRegistry.registerFirstMouseDownBinding(
79                         treeImagePainterMouseEventMatcher, new NoOpMouseAction());
80             }
81
82 }