Project

General

Profile

Download (5.71 KB) Statistics
| Branch: | Tag: | Revision:
1
/*******************************************************************************
2
 * Copyright (c) 2000, 2010 IBM Corporation 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
 *     IBM Corporation - initial API and implementation
10
 *******************************************************************************/
11
package org.eclipse.gef.internal.ui.palette.editparts;
12

    
13
import org.eclipse.swt.accessibility.ACC;
14
import org.eclipse.swt.accessibility.AccessibleControlEvent;
15
import org.eclipse.swt.accessibility.AccessibleEvent;
16
import org.eclipse.swt.graphics.Image;
17

    
18
import org.eclipse.ui.IMemento;
19

    
20
import org.eclipse.draw2d.Graphics;
21
import org.eclipse.draw2d.IFigure;
22

    
23
import org.eclipse.gef.AccessibleEditPart;
24
import org.eclipse.gef.DragTracker;
25
import org.eclipse.gef.Request;
26
import org.eclipse.gef.internal.ui.palette.PaletteColorUtil;
27
import org.eclipse.gef.palette.PaletteEntry;
28
import org.eclipse.gef.palette.PaletteTemplateEntry;
29
import org.eclipse.gef.ui.palette.PaletteViewerPreferences;
30
import org.eclipse.gef.ui.palette.editparts.PaletteEditPart;
31

    
32
/**
33
 * @author Eric Bordeau, Pratik Shah
34
 */
35
public class TemplateEditPart extends PaletteEditPart {
36

    
37
	private static final String SELECTION_STATE = "selection"; //$NON-NLS-1$
38

    
39
	/**
40
	 * Constructor
41
	 * 
42
	 * @param entry
43
	 *            The model entry
44
	 */
45
	public TemplateEditPart(PaletteTemplateEntry entry) {
46
		super(entry);
47
	}
48

    
49
	/**
50
	 * @see org.eclipse.gef.ui.palette.editparts.PaletteEditPart#createAccessible()
51
	 */
52
	protected AccessibleEditPart createAccessible() {
53
		return new AccessibleGraphicalEditPart() {
54
			public void getDescription(AccessibleEvent e) {
55
				e.result = getTemplateEntry().getDescription();
56
			}
57

    
58
			public void getName(AccessibleEvent e) {
59
				e.result = getTemplateEntry().getLabel();
60
			}
61

    
62
			public void getRole(AccessibleControlEvent e) {
63
				e.detail = ACC.ROLE_LISTITEM;
64
			}
65
		};
66
	}
67

    
68
	/**
69
	 * @see org.eclipse.gef.editparts.AbstractGraphicalEditPart#createFigure()
70
	 */
71
	public IFigure createFigure() {
72
		IFigure fig = new DetailedLabelFigure() {
73

    
74
			public IFigure getToolTip() {
75
				return createToolTip();
76
			}
77

    
78
			protected void paintFigure(Graphics graphics) {
79
				super.paintFigure(graphics);
80

    
81
				if (isSelected()) {
82
					graphics.setBackgroundColor(PaletteColorUtil
83
							.getSelectedColor());
84
				}
85
				graphics.fillRoundRectangle(ToolEntryEditPart
86
						.getSelectionRectangle(getLayoutSetting(), this), 3, 3);
87
			}
88

    
89
		};
90
		fig.setRequestFocusEnabled(true);
91
		return fig;
92
	}
93

    
94
	/**
95
	 * @see org.eclipse.gef.ui.palette.editparts.PaletteEditPart#deactivate()
96
	 */
97
	public void deactivate() {
98
		((DetailedLabelFigure) getFigure()).dispose();
99
		super.deactivate();
100
	}
101

    
102
	/**
103
	 * @see org.eclipse.gef.ui.palette.editparts.PaletteEditPart#getDragTracker(Request)
104
	 */
105
	public DragTracker getDragTracker(Request request) {
106
		return new SingleSelectionTracker() {
107
			protected boolean handleButtonDown(int button) {
108
				getFigure().requestFocus();
109
				return super.handleButtonDown(button);
110
			}
111
		};
112
	}
113

    
114
	private PaletteTemplateEntry getTemplateEntry() {
115
		return (PaletteTemplateEntry) getModel();
116
	}
117

    
118
	/**
119
	 * @see org.eclipse.gef.ui.palette.editparts.PaletteEditPart#getToolTipText()
120
	 */
121
	protected String getToolTipText() {
122
		String result = null;
123
		if (getLayoutSetting() != PaletteViewerPreferences.LAYOUT_DETAILS) {
124
			result = super.getToolTipText();
125
		}
126
		return result;
127
	}
128

    
129
	/**
130
	 * If this edit part's name is truncated in its label, the name should be
131
	 * prepended to the tooltip.
132
	 * 
133
	 * @return whether the name needs to be included in the tooltip
134
	 */
135
	protected boolean nameNeededInToolTip() {
136
		DetailedLabelFigure label = (DetailedLabelFigure) getFigure();
137
		return label.isNameTruncated() || super.nameNeededInToolTip();
138
	}
139

    
140
	/**
141
	 * @see org.eclipse.gef.editparts.AbstractEditPart#refreshVisuals()
142
	 */
143
	protected void refreshVisuals() {
144
		DetailedLabelFigure fig = (DetailedLabelFigure) getFigure();
145
		PaletteEntry entry = getPaletteEntry();
146
		fig.setName(entry.getLabel());
147
		fig.setDescription(entry.getDescription());
148
		if (getPreferenceSource().useLargeIcons())
149
			setImageDescriptor(entry.getLargeIcon());
150
		else
151
			setImageDescriptor(entry.getSmallIcon());
152
		int layoutMode = getLayoutSetting();
153
		fig.setLayoutMode(layoutMode);
154
		if (layoutMode == PaletteViewerPreferences.LAYOUT_COLUMNS) {
155
			fig.setBorder(ToolEntryEditPart.ICON_BORDER);
156
		} else if (layoutMode == PaletteViewerPreferences.LAYOUT_LIST
157
				|| layoutMode == PaletteViewerPreferences.LAYOUT_DETAILS) {
158
			fig.setBorder(ToolEntryEditPart.LIST_BORDER);
159
		} else if (layoutMode == PaletteViewerPreferences.LAYOUT_ICONS
160
				&& !isToolbarItem()) {
161
			fig.setBorder(ToolEntryEditPart.ICON_BORDER);
162
		} else {
163
			fig.setBorder(null);
164
		}
165
		super.refreshVisuals();
166
	}
167

    
168
	public void restoreState(IMemento memento) {
169
		setSelected(memento.getInteger(SELECTION_STATE).intValue());
170
		super.restoreState(memento);
171
	}
172

    
173
	public void saveState(IMemento memento) {
174
		memento.putInteger(SELECTION_STATE, getSelected());
175
		super.saveState(memento);
176
	}
177

    
178
	/**
179
	 * @see org.eclipse.gef.ui.palette.editparts.PaletteEditPart#setImageInFigure(Image)
180
	 */
181
	protected void setImageInFigure(Image image) {
182
		DetailedLabelFigure fig = (DetailedLabelFigure) getFigure();
183
		fig.setImage(image);
184
	}
185

    
186
	/**
187
	 * @see org.eclipse.gef.EditPart#setSelected(int)
188
	 */
189
	public void setSelected(int value) {
190
		super.setSelected(value);
191
		DetailedLabelFigure label = (DetailedLabelFigure) getFigure();
192
		if (value == SELECTED_PRIMARY) {
193
			label.requestFocus();
194
			label.setSelected(true);
195
		} else {
196
			label.setSelected(false);
197
		}
198
		label.repaint();
199

    
200
	}
201

    
202
}
(20-20/22)