Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
View | Details | Raw Unified | Return to bug 453251
Collapse All | Expand All

(-)a/org.eclipse.gef/src/org/eclipse/gef/ui/palette/FlyoutPaletteComposite.java (-3 / +2 lines)
Lines 104-110 import org.eclipse.gef.ui.views.palette.PaletteView; Link Here
104
 * @author Pratik Shah
104
 * @author Pratik Shah
105
 * @since 3.0
105
 * @since 3.0
106
 */
106
 */
107
public class FlyoutPaletteComposite extends Composite {
107
public class FlyoutPaletteComposite extends FlyoutPaletteCompositeBase {
108
108
109
	private static final FontManager FONT_MGR = new FontManager();
109
	private static final FontManager FONT_MGR = new FontManager();
110
110
Lines 137-145 public class FlyoutPaletteComposite extends Composite { Link Here
137
137
138
	private PropertyChangeSupport listeners = new PropertyChangeSupport(this);
138
	private PropertyChangeSupport listeners = new PropertyChangeSupport(this);
139
	private Composite paletteContainer;
139
	private Composite paletteContainer;
140
	private PaletteViewer pViewer, externalViewer;
140
	private PaletteViewer pViewer;
141
	private IMemento capturedPaletteState;
141
	private IMemento capturedPaletteState;
142
	private Control graphicalControl;
143
	private Composite sash;
142
	private Composite sash;
144
	private PaletteViewerProvider provider;
143
	private PaletteViewerProvider provider;
145
	private FlyoutPreferences prefs;
144
	private FlyoutPreferences prefs;
(-)a/org.eclipse.gef/src/org/eclipse/gef/ui/palette/FlyoutPaletteCompositeBase.java (+86 lines)
Added Link Here
1
/*******************************************************************************
2
 * Copyright (c) Punkhorn Software
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
 *     Punkhorn Software - initial API and implementation
10
 *******************************************************************************/
11
package org.eclipse.gef.ui.palette;
12
13
import org.eclipse.swt.widgets.Composite;
14
import org.eclipse.swt.widgets.Control;
15
16
import org.eclipse.ui.IMemento;
17
18
import org.eclipse.gef.GraphicalViewer;
19
import org.eclipse.gef.ui.parts.GraphicalEditorWithFlyoutPalette;
20
21
/**
22
 * The FlyoutPaletteCompositeBase is a base class for a Composite class which
23
 * shows a flyout palette alongside another control. The flyout palette
24
 * auto-hides (thus maximizing space) when not in use, but can also be pinned
25
 * open if so desired. It will only be visible when the PaletteView is not.
26
 * 
27
 * <p>
28
 * A custom palette can be implemented for
29
 * {@link GraphicalEditorWithFlyoutPalette} by extending this class and
30
 * overriding the method
31
 * {@link GraphicalEditorWithFlyoutPalette#createPaletteComposite } to return the
32
 * custom implementation.
33
 * 
34
 * @author William Collins punkhornsw@gmail.com
35
 * @since 3.10
36
 */
37
public class FlyoutPaletteCompositeBase extends Composite {
38
39
	protected PaletteViewer externalViewer;
40
41
	protected Control graphicalControl;
42
43
	public FlyoutPaletteCompositeBase(Composite parent, int style) {
44
		super(parent, style);
45
	}
46
47
	/**
48
	 * If an external palette viewer is provided, palette state (that is
49
	 * captured in {@link PaletteViewer#saveState(IMemento)} -- active tool,
50
	 * drawer expansion state, drawer pin state, etc.) will be maintained when
51
	 * switching between the two viewers. Providing an external viewer, although
52
	 * recommended, is optional.
53
	 * 
54
	 * @param viewer
55
	 *            The palette viewer used in the PaletteView
56
	 */
57
	public void setExternalViewer(PaletteViewer viewer) {
58
		externalViewer = viewer;
59
	}
60
61
	/**
62
	 * Sets the control along the side of which the palette is to be displayed.
63
	 * The given Control should be a child of this Composite. This method should
64
	 * only be invoked once.
65
	 * 
66
	 * @param graphicalViewer
67
	 *            the control of the graphical viewer; cannot be
68
	 *            <code>null</code>
69
	 */
70
	public void setGraphicalControl(Control graphicalViewer) {
71
		graphicalControl = graphicalViewer;
72
	}
73
74
	/**
75
	 * This method hooks a DropTargetListener that collapses the flyout patette
76
	 * when the user drags something from the palette and moves the cursor to
77
	 * the primary viewer's control. If the auto-hide feature of the palette is
78
	 * to work properly when dragging, this method should be called before any
79
	 * other drop target listeners are added to the primary viewer.
80
	 * 
81
	 * @param viewer
82
	 *            the primary viewer
83
	 */
84
	public void hookDropTargetListener(GraphicalViewer viewer) {
85
	}
86
}
(-)a/org.eclipse.gef/src/org/eclipse/gef/ui/parts/GraphicalEditorWithFlyoutPalette.java (-4 / +19 lines)
Lines 19-24 import org.eclipse.gef.internal.InternalGEFPlugin; Link Here
19
import org.eclipse.gef.palette.PaletteRoot;
19
import org.eclipse.gef.palette.PaletteRoot;
20
import org.eclipse.gef.ui.palette.FlyoutPaletteComposite;
20
import org.eclipse.gef.ui.palette.FlyoutPaletteComposite;
21
import org.eclipse.gef.ui.palette.FlyoutPaletteComposite.FlyoutPreferences;
21
import org.eclipse.gef.ui.palette.FlyoutPaletteComposite.FlyoutPreferences;
22
import org.eclipse.gef.ui.palette.FlyoutPaletteCompositeBase;
22
import org.eclipse.gef.ui.palette.PaletteViewer;
23
import org.eclipse.gef.ui.palette.PaletteViewer;
23
import org.eclipse.gef.ui.palette.PaletteViewerProvider;
24
import org.eclipse.gef.ui.palette.PaletteViewerProvider;
24
import org.eclipse.gef.ui.views.palette.PalettePage;
25
import org.eclipse.gef.ui.views.palette.PalettePage;
Lines 39-45 import org.eclipse.gef.ui.views.palette.PaletteViewerPage; Link Here
39
public abstract class GraphicalEditorWithFlyoutPalette extends GraphicalEditor {
40
public abstract class GraphicalEditorWithFlyoutPalette extends GraphicalEditor {
40
41
41
	private PaletteViewerProvider provider;
42
	private PaletteViewerProvider provider;
42
	private FlyoutPaletteComposite splitter;
43
	private FlyoutPaletteCompositeBase splitter;
43
	private CustomPalettePage page;
44
	private CustomPalettePage page;
44
45
45
	/**
46
	/**
Lines 50-55 public abstract class GraphicalEditorWithFlyoutPalette extends GraphicalEditor { Link Here
50
	}
51
	}
51
52
52
	/**
53
	/**
54
	 * Create a FlyoutPaletteComposite that will be used to show a flyout
55
	 * palette alongside the editor. Derived classes can override this method to
56
	 * provide their own custom palette.
57
	 * 
58
	 * @param parent
59
	 *            The parent composite hosting the FlyoutPaletteComposite.
60
	 * @return a newly-created {@link FlyoutPaletteComposite}
61
	 * @since 3.10
62
	 */
63
	protected FlyoutPaletteCompositeBase createPaletteComposite(Composite parent) {
64
		return new FlyoutPaletteComposite(parent, SWT.NONE,
65
				getSite().getPage(), getPaletteViewerProvider(),
66
				getPalettePreferences());
67
	}
68
69
	/**
53
	 * Creates a PaletteViewerProvider that will be used to create palettes for
70
	 * Creates a PaletteViewerProvider that will be used to create palettes for
54
	 * the view and the flyout.
71
	 * the view and the flyout.
55
	 * 
72
	 * 
Lines 70-77 public abstract class GraphicalEditorWithFlyoutPalette extends GraphicalEditor { Link Here
70
	 * @see GraphicalEditor#createPartControl(Composite)
87
	 * @see GraphicalEditor#createPartControl(Composite)
71
	 */
88
	 */
72
	public void createPartControl(Composite parent) {
89
	public void createPartControl(Composite parent) {
73
		splitter = new FlyoutPaletteComposite(parent, SWT.NONE, getSite()
90
		splitter = createPaletteComposite(parent);
74
				.getPage(), getPaletteViewerProvider(), getPalettePreferences());
75
		super.createPartControl(splitter);
91
		super.createPartControl(splitter);
76
		splitter.setGraphicalControl(getGraphicalControl());
92
		splitter.setGraphicalControl(getGraphicalControl());
77
		if (page != null) {
93
		if (page != null) {
78
- 

Return to bug 453251