### Eclipse Workspace Patch 1.0
#P org.eclipse.gef.examples.shapes
Index: src/org/eclipse/gef/examples/shapes/ShapesEditorPaletteFactory.java
===================================================================
RCS file: /cvsroot/tools/org.eclipse.gef/examples/org.eclipse.gef.examples.shapes/src/org/eclipse/gef/examples/shapes/ShapesEditorPaletteFactory.java,v
retrieving revision 1.9
diff -u -r1.9 ShapesEditorPaletteFactory.java
--- src/org/eclipse/gef/examples/shapes/ShapesEditorPaletteFactory.java 29 Sep 2005 22:00:25 -0000 1.9
+++ src/org/eclipse/gef/examples/shapes/ShapesEditorPaletteFactory.java 22 Feb 2008 14:43:37 -0000
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2004, 2005 Elias Volanakis and others.
+ * Copyright (c) 2004, 2008 Elias Volanakis and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -20,6 +20,7 @@
import org.eclipse.gef.palette.PaletteGroup;
import org.eclipse.gef.palette.PaletteRoot;
import org.eclipse.gef.palette.PaletteSeparator;
+import org.eclipse.gef.palette.PaletteToolbar;
import org.eclipse.gef.palette.PanningSelectionToolEntry;
import org.eclipse.gef.palette.ToolEntry;
import org.eclipse.gef.requests.CreationFactory;
@@ -82,18 +83,15 @@
/** Create the "Tools" group. */
private static PaletteContainer createToolsGroup(PaletteRoot palette) {
- PaletteGroup toolGroup = new PaletteGroup("Tools");
+ PaletteToolbar toolbar = new PaletteToolbar("Tools");
// Add a selection tool to the group
ToolEntry tool = new PanningSelectionToolEntry();
- toolGroup.add(tool);
+ toolbar.add(tool);
palette.setDefaultEntry(tool);
// Add a marquee tool to the group
- toolGroup.add(new MarqueeToolEntry());
-
- // Add a (unnamed) separator to the group
- toolGroup.add(new PaletteSeparator());
+ toolbar.add(new MarqueeToolEntry());
// Add (solid-line) connection tool
tool = new ConnectionCreationToolEntry(
@@ -107,7 +105,7 @@
},
ImageDescriptor.createFromFile(ShapesPlugin.class, "icons/connection_s16.gif"),
ImageDescriptor.createFromFile(ShapesPlugin.class, "icons/connection_s24.gif"));
- toolGroup.add(tool);
+ toolbar.add(tool);
// Add (dashed-line) connection tool
tool = new ConnectionCreationToolEntry(
@@ -121,9 +119,9 @@
},
ImageDescriptor.createFromFile(ShapesPlugin.class, "icons/connection_d16.gif"),
ImageDescriptor.createFromFile(ShapesPlugin.class, "icons/connection_d24.gif"));
- toolGroup.add(tool);
+ toolbar.add(tool);
- return toolGroup;
+ return toolbar;
}
/** Utility class. */
#P org.eclipse.gef
Index: src/org/eclipse/gef/internal/InternalImages.java
===================================================================
RCS file: /cvsroot/tools/org.eclipse.gef/plugins/org.eclipse.gef/src/org/eclipse/gef/internal/InternalImages.java,v
retrieving revision 1.13
diff -u -r1.13 InternalImages.java
--- src/org/eclipse/gef/internal/InternalImages.java 2 Jun 2005 19:22:39 -0000 1.13
+++ src/org/eclipse/gef/internal/InternalImages.java 22 Feb 2008 14:43:38 -0000
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
+ * Copyright (c) 2000, 2008 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -10,6 +10,8 @@
*******************************************************************************/
package org.eclipse.gef.internal;
+import org.eclipse.swt.graphics.Image;
+
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.ui.ISharedImages;
import org.eclipse.ui.PlatformUI;
@@ -59,6 +61,26 @@
public static final ImageDescriptor DESC_BLOCK_ALIGN_CENTER;
public static final ImageDescriptor DESC_BLOCK_ALIGN_RIGHT;
+public static final ImageDescriptor DESC_PINNED;
+public static final ImageDescriptor DESC_UNPINNED;
+
+public static final ImageDescriptor DESC_PALETTE;
+
+/**
+ * Can be used to access the cached pinned image by using {@link #get(String)}.
+ */
+public static final String IMG_PINNED = "icons/pinned.gif";//$NON-NLS-1$
+
+/**
+ * Can be used to access the cached pinned image by using {@link #get(String)}.
+ */
+public static final String IMG_UNPINNED = "icons/unpinned.gif";//$NON-NLS-1$
+
+/**
+ * Can be used to access the cached pinned image by using {@link #get(String)}.
+ */
+public static final String IMG_PALETTE = "icons/palette_view.gif";//$NON-NLS-1$
+
static {
DESC_BOLD = createDescriptor("icons/style_bold.gif"); //$NON-NLS-1$
DESC_ITALIC = createDescriptor("icons/style_italic.gif"); //$NON-NLS-1$
@@ -71,8 +93,8 @@
DESC_BLOCK_ALIGN_CENTER = createDescriptor("icons/style_paragraph_center.gif"); //$NON-NLS-1$
DESC_BLOCK_ALIGN_RIGHT = createDescriptor("icons/style_paragraph_right.gif"); //$NON-NLS-1$
- DESC_ZOOM_IN = createDescriptor("icons/zoomplus.gif"); //$NON-NLS-1$
- DESC_ZOOM_OUT = createDescriptor("icons/zoomminus.gif"); //$NON-NLS-1$
+ DESC_ZOOM_IN = createDescriptor("icons/zoom_in.gif"); //$NON-NLS-1$
+ DESC_ZOOM_OUT = createDescriptor("icons/zoom_out.gif"); //$NON-NLS-1$
DESC_MATCH_WIDTH = createDescriptor("icons/matchwidth.gif"); //$NON-NLS-1$
DESC_MATCH_HEIGHT = createDescriptor("icons/matchheight.gif"); //$NON-NLS-1$
@@ -101,10 +123,45 @@
ICON_MATCH_WIDTH = createDescriptor("icons/sizehz.gif"); //$NON-NLS-1$
ICON_MATCH_HEIGHT = createDescriptor("icons/sizevt.gif"); //$NON-NLS-1$
+
+ DESC_PINNED = createAndCache(IMG_PINNED);
+ DESC_UNPINNED = createAndCache(IMG_UNPINNED);
+
+ DESC_PALETTE = createAndCache(IMG_PALETTE);
+
}
private static ImageDescriptor createDescriptor(String filename) {
return ImageDescriptor.createFromFile(InternalImages.class, filename);
}
+/**
+ * Creates the image descriptor from the filename given and caches it in the
+ * plugin's image registry.
+ *
+ * @param imageName
+ * the full filename of the image
+ * @return the new image descriptor
+ */
+private static ImageDescriptor createAndCache(String imageName) {
+ ImageDescriptor result = createDescriptor(imageName);
+ InternalGEFPlugin.getDefault().getImageRegistry().put(imageName, result);
+ return result;
+}
+
+/**
+ * Gets an image from the image registry. This image should not be disposed
+ * of, that is handled in the image registry. The image descriptor must have
+ * previously been cached in the image registry. The cached images for the
+ * public image names defined in this file can be retrieved using this
+ * method.
+ *
+ * @param imageName
+ * the full filename of the image
+ * @return the image or null if it has not been cached in the registry
+ */
+public static Image get(String imageName) {
+ return InternalGEFPlugin.getDefault().getImageRegistry().get(imageName);
+}
+
}
Index: src/org/eclipse/gef/internal/ui/palette/editparts/PaletteStackEditPart.java
===================================================================
RCS file: /cvsroot/tools/org.eclipse.gef/plugins/org.eclipse.gef/src/org/eclipse/gef/internal/ui/palette/editparts/PaletteStackEditPart.java,v
retrieving revision 1.16
diff -u -r1.16 PaletteStackEditPart.java
--- src/org/eclipse/gef/internal/ui/palette/editparts/PaletteStackEditPart.java 21 Dec 2007 21:02:26 -0000 1.16
+++ src/org/eclipse/gef/internal/ui/palette/editparts/PaletteStackEditPart.java 22 Feb 2008 14:43:38 -0000
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
+ * Copyright (c) 2000, 2008 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -12,6 +12,7 @@
import java.beans.PropertyChangeEvent;
import java.util.Iterator;
+import java.util.List;
import org.eclipse.swt.events.MenuEvent;
import org.eclipse.swt.events.MenuListener;
@@ -23,6 +24,7 @@
import org.eclipse.draw2d.ActionEvent;
import org.eclipse.draw2d.ActionListener;
+import org.eclipse.draw2d.Border;
import org.eclipse.draw2d.BorderLayout;
import org.eclipse.draw2d.ButtonBorder;
import org.eclipse.draw2d.ButtonModel;
@@ -35,12 +37,12 @@
import org.eclipse.draw2d.IFigure;
import org.eclipse.draw2d.StackLayout;
import org.eclipse.draw2d.geometry.Dimension;
-import org.eclipse.draw2d.geometry.Insets;
import org.eclipse.draw2d.geometry.Rectangle;
import org.eclipse.gef.GraphicalEditPart;
import org.eclipse.gef.Request;
import org.eclipse.gef.RequestConstants;
+import org.eclipse.gef.internal.ui.palette.PaletteColorUtil;
import org.eclipse.gef.palette.PaletteEntry;
import org.eclipse.gef.palette.PaletteListener;
import org.eclipse.gef.palette.PaletteStack;
@@ -61,14 +63,15 @@
{
private static final Dimension EMPTY_DIMENSION = new Dimension(0, 0);
+private static final Border BORDER_TOGGLE = new ButtonBorder(ButtonBorder.SCHEMES.TOOLBAR);
// listen to changes of clickable tool figure
private ChangeListener clickableListener = new ChangeListener() {
public void handleStateChanged(ChangeEvent event) {
if (event.getPropertyName().equals(ButtonModel.MOUSEOVER_PROPERTY))
- arrowFigure.getModel().setMouseOver(activeFigure.getModel().isMouseOver());
+ getClickableFigure().getModel().setMouseOver(activeFigure.getModel().isMouseOver());
else if (event.getPropertyName().equals(ButtonModel.ARMED_PROPERTY))
- arrowFigure.getModel().setArmed(activeFigure.getModel().isArmed());
+ getClickableFigure().getModel().setArmed(activeFigure.getModel().isArmed());
}
};
@@ -76,9 +79,9 @@
private ChangeListener clickableArrowListener = new ChangeListener() {
public void handleStateChanged(ChangeEvent event) {
if (event.getPropertyName().equals(ButtonModel.MOUSEOVER_PROPERTY))
- activeFigure.getModel().setMouseOver(arrowFigure.getModel().isMouseOver());
+ activeFigure.getModel().setMouseOver(getClickableFigure().getModel().isMouseOver());
if (event.getPropertyName().equals(ButtonModel.ARMED_PROPERTY))
- activeFigure.getModel().setArmed(arrowFigure.getModel().isArmed());
+ activeFigure.getModel().setArmed(getClickableFigure().getModel().isArmed());
}
};
@@ -93,16 +96,17 @@
private PaletteListener paletteListener = new PaletteListener() {
public void activeToolChanged(PaletteViewer palette, ToolEntry tool) {
if (getStack().getChildren().contains(tool)) {
- if (!arrowFigure.getModel().isSelected())
- arrowFigure.getModel().setSelected(true);
+ if (!getClickableFigure().getModel().isSelected())
+ getClickableFigure().getModel().setSelected(true);
if (!getStack().getActiveEntry().equals(tool))
getStack().setActiveEntry(tool);
} else
- arrowFigure.getModel().setSelected(false);
+ getClickableFigure().getModel().setSelected(false);
}
};
private Clickable activeFigure;
+private Clickable clickableFigure;
private RolloverArrow arrowFigure;
private Figure contentsFigure;
private Menu menu;
@@ -166,62 +170,70 @@
* @see org.eclipse.gef.editparts.AbstractGraphicalEditPart#createFigure()
*/
public IFigure createFigure() {
- Figure figure = new Figure() {
- public Dimension getPreferredSize(int wHint, int hHint) {
- if (PaletteStackEditPart.this.getChildren().isEmpty())
- return EMPTY_DIMENSION;
- return super.getPreferredSize(wHint, hHint);
- }
-
- public void paintBorder(Graphics graphics) {
- int layoutMode = getPreferenceSource().getLayoutSetting();
- if (layoutMode == PaletteViewerPreferences.LAYOUT_LIST
- || layoutMode == PaletteViewerPreferences.LAYOUT_DETAILS)
- return;
-
- Rectangle rect = getBounds().getCopy();
-
- graphics.translate(getLocation());
- graphics.setBackgroundColor(ColorConstants.listForeground);
-
- // fill the corner arrow
- int[] points = new int[6];
-
- points[0] = rect.width;
- points[1] = rect.height - 5;
- points[2] = rect.width;
- points[3] = rect.height;
- points[4] = rect.width - 5;
- points[5] = rect.height;
-
- graphics.fillPolygon(points);
-
- graphics.translate(getLocation().getNegated());
- }
- };
- figure.setLayoutManager(new BorderLayout());
-
+
+ IFigure stackFigure;
+ arrowFigure = new RolloverArrow();
+
+ if (isToolbarItem()) {
+ // the entire stack figure is clickable on the toolbar
+ stackFigure = new Clickable() {
+ public boolean hasFocus() {
+ return false;
+ }
+ public Dimension getPreferredSize(int wHint, int hHint) {
+ if (PaletteStackEditPart.this.getChildren().isEmpty())
+ return EMPTY_DIMENSION;
+ return super.getPreferredSize(wHint, hHint);
+ }
+ };
+ ((Clickable)stackFigure).setRolloverEnabled(true);
+ stackFigure.setBorder(BORDER_TOGGLE);
+
+ // Set up the arrow figure. Disable the arrow figure so clicks go to the stack figure.
+ arrowFigure.setBackgroundColor(ColorConstants.black);
+ arrowFigure.setEnabled(false);
+
+ clickableFigure = ((Clickable)stackFigure);
+ } else {
+ // the stack figure is not clickable on the palette so that drag and drop still works
+ stackFigure = new Figure() {
+ public Dimension getPreferredSize(int wHint, int hHint) {
+ if (PaletteStackEditPart.this.getChildren().isEmpty())
+ return EMPTY_DIMENSION;
+ return super.getPreferredSize(wHint, hHint);
+ }
+ };
+
+ // Set up the arrow figure.
+ arrowFigure.setBackgroundColor(PaletteColorUtil.WIDGET_DARK_SHADOW);
+
+ clickableFigure = arrowFigure;
+ }
+
contentsFigure = new Figure();
-
StackLayout stackLayout = new StackLayout();
// make it so the stack layout does not allow the invisible figures to contribute
// to its bounds
stackLayout.setObserveVisibility(true);
contentsFigure.setLayoutManager(stackLayout);
- figure.add(contentsFigure, BorderLayout.CENTER);
-
- arrowFigure = new RolloverArrow();
-
- arrowFigure.addChangeListener(clickableArrowListener);
-
- arrowFigure.addActionListener(actionListener);
+ stackFigure.add(contentsFigure);
+ stackFigure.add(arrowFigure);
+
+ getClickableFigure().addChangeListener(clickableArrowListener);
+ getClickableFigure().addActionListener(actionListener);
- int layoutMode = getPreferenceSource().getLayoutSetting();
- if (layoutMode == PaletteViewerPreferences.LAYOUT_LIST
- || layoutMode == PaletteViewerPreferences.LAYOUT_DETAILS)
- figure.add(arrowFigure, BorderLayout.RIGHT);
- return figure;
+ return stackFigure;
+}
+
+/**
+ * Returns the Clickable
figure. This differs depending on
+ * whether or not this palette stack is on the palette toolbar.
+ *
+ * @return the Clickable
figure
+ */
+private Clickable getClickableFigure() {
+ return clickableFigure;
}
/**
@@ -230,8 +242,8 @@
public void deactivate() {
if (activeFigure != null)
activeFigure.removeChangeListener(clickableListener);
- arrowFigure.removeActionListener(actionListener);
- arrowFigure.removeChangeListener(clickableArrowListener);
+ getClickableFigure().removeActionListener(actionListener);
+ getClickableFigure().removeChangeListener(clickableArrowListener);
getPaletteViewer().removePaletteListener(paletteListener);
super.deactivate();
}
@@ -288,7 +300,7 @@
figureBounds.getBottomLeft().x, figureBounds.getBottomLeft().y);
// remove feedback from the arrow Figure and children figures
- arrowFigure.getModel().setMouseOver(false);
+ getClickableFigure().getModel().setMouseOver(false);
eraseTargetFeedback(new Request(RequestConstants.REQ_SELECTION));
menu.setLocation(menuLocation);
@@ -324,13 +336,31 @@
* @see org.eclipse.gef.editparts.AbstractEditPart#refreshVisuals()
*/
protected void refreshVisuals() {
- int layoutMode = getPreferenceSource().getLayoutSetting();
- if (layoutMode == PaletteViewerPreferences.LAYOUT_LIST
- || layoutMode == PaletteViewerPreferences.LAYOUT_DETAILS) {
- if (!getFigure().getChildren().contains(arrowFigure))
- getFigure().add(arrowFigure, BorderLayout.RIGHT);
- } else if (getFigure().getChildren().contains(arrowFigure))
- getFigure().remove(arrowFigure);
+ int layoutMode = getLayoutSetting();
+ if (layoutMode == PaletteViewerPreferences.LAYOUT_LIST
+ || layoutMode == PaletteViewerPreferences.LAYOUT_DETAILS) {
+ getFigure().setLayoutManager(new StackLayout() {
+ public void layout(IFigure figure) {
+ Rectangle r = figure.getClientArea();
+ List children = figure.getChildren();
+ IFigure child;
+ for (int i = 0; i < children.size(); i++) {
+ child = (IFigure)children.get(i);
+ if (child == arrowFigure) {
+ Rectangle.SINGLETON.setBounds(r);
+ Rectangle.SINGLETON.width = 11;
+ child.setBounds(Rectangle.SINGLETON);
+ } else {
+ child.setBounds(r);
+ }
+ }
+ }
+ });
+ } else {
+ getFigure().setLayoutManager(new BorderLayout());
+ getFigure().setConstraint(contentsFigure, BorderLayout.CENTER);
+ getFigure().setConstraint(arrowFigure, BorderLayout.RIGHT);
+ }
}
/**
@@ -396,35 +426,14 @@
{
/**
- * Creates a new Clickable with a TriangleFigure as its child.
+ * Creates a new Clickable that paints a triangle figure.
*/
RolloverArrow() {
- super(new TriangleFigure());
+ super();
setRolloverEnabled(true);
- setBorder(new ButtonBorder(ButtonBorder.SCHEMES.TOOLBAR));
+ setBorder(null);
setOpaque(false);
- setStyle(Clickable.STYLE_BUTTON);
-}
-
-/**
- * Draws a checkered pattern to emulate a toggle button that is in the selected state.
- * @param graphics The Graphics object used to paint
- */
-protected void fillCheckeredRectangle(Graphics graphics) {
- // method taken from ToggleButton - because this figure *isn't* a toggle button,
- // but should match the checkered look of the tool's toggle button
- graphics.setBackgroundColor(ColorConstants.button);
- graphics.setForegroundColor(ColorConstants.buttonLightest);
- Rectangle rect = getClientArea(Rectangle.SINGLETON).crop(new Insets(1, 1, 0, 0));
- graphics.fillRectangle(rect.x, rect.y, rect.width, rect.height);
-
- graphics.clipRect(rect);
- graphics.translate(rect.x, rect.y);
- int n = rect.width + rect.height;
- for (int i = 1; i < n; i += 2) {
- graphics.drawLine(0, i, i, 0);
- }
- graphics.restoreState();
+ setPreferredSize(11, -1);
}
/**
@@ -434,49 +443,21 @@
return false;
}
-/**
- * @see org.eclipse.draw2d.Figure#paintFigure(Graphics)
- */
-protected void paintFigure(Graphics graphics) {
- if (isSelected() && isOpaque())
- fillCheckeredRectangle(graphics);
- else
- super.paintFigure(graphics);
-}
-
-}
-
-class TriangleFigure
- extends Figure
-{
-
-/**
- * Creates a new TriangleFigure with preferred size 7, -1
- */
-TriangleFigure() {
- super();
- setPreferredSize(7, -1);
-}
-
-/**
- * @see org.eclipse.draw2d.IFigure#paint(org.eclipse.draw2d.Graphics)
- */
-public void paint(Graphics graphics) {
+public void paintFigure(Graphics graphics) {
Rectangle rect = getBounds().getCopy();
graphics.translate(getLocation());
- graphics.setBackgroundColor(ColorConstants.listForeground);
// fill the arrow
int[] points = new int[8];
- points[0] = 1;
+ points[0] = 4;
points[1] = rect.height / 2;
- points[2] = 6;
+ points[2] = 9;
points[3] = rect.height / 2;
- points[4] = 3;
+ points[4] = 6;
points[5] = 3 + rect.height / 2;
- points[6] = 1;
+ points[6] = 4;
points[7] = rect.height / 2;
graphics.fillPolygon(points);
Index: src/org/eclipse/gef/internal/ui/palette/editparts/GroupFigure.java
===================================================================
RCS file: src/org/eclipse/gef/internal/ui/palette/editparts/GroupFigure.java
diff -N src/org/eclipse/gef/internal/ui/palette/editparts/GroupFigure.java
--- src/org/eclipse/gef/internal/ui/palette/editparts/GroupFigure.java 30 Mar 2005 21:27:03 -0000 1.9
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,27 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.gef.internal.ui.palette.editparts;
-
-import org.eclipse.draw2d.Border;
-import org.eclipse.draw2d.Figure;
-
-/**
- * @author hudsonr
- */
-public class GroupFigure extends Figure {
-
-private static final Border BORDER = new RaisedBorder(2, 2, 2, 2);
-
-{
- setBorder(BORDER);
-}
-
-}
Index: src/org/eclipse/gef/internal/ui/palette/editparts/DrawerEditPart.java
===================================================================
RCS file: /cvsroot/tools/org.eclipse.gef/plugins/org.eclipse.gef/src/org/eclipse/gef/internal/ui/palette/editparts/DrawerEditPart.java,v
retrieving revision 1.24
diff -u -r1.24 DrawerEditPart.java
--- src/org/eclipse/gef/internal/ui/palette/editparts/DrawerEditPart.java 19 Oct 2007 19:47:06 -0000 1.24
+++ src/org/eclipse/gef/internal/ui/palette/editparts/DrawerEditPart.java 22 Feb 2008 14:43:38 -0000
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
+ * Copyright (c) 2000, 2008 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -19,7 +19,6 @@
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.ui.IMemento;
-import org.eclipse.draw2d.ColorConstants;
import org.eclipse.draw2d.FocusEvent;
import org.eclipse.draw2d.FocusListener;
import org.eclipse.draw2d.IFigure;
@@ -32,6 +31,7 @@
import org.eclipse.gef.editparts.ViewportExposeHelper;
import org.eclipse.gef.editparts.ViewportMouseWheelHelper;
import org.eclipse.gef.internal.InternalImages;
+import org.eclipse.gef.internal.ui.palette.PaletteColorUtil;
import org.eclipse.gef.palette.PaletteDrawer;
import org.eclipse.gef.palette.PaletteTemplateEntry;
import org.eclipse.gef.ui.palette.PaletteViewerPreferences;
@@ -195,14 +195,15 @@
setImageDescriptor(img);
getDrawerFigure().setTitle(getPaletteEntry().getLabel());
- getDrawerFigure().setLayoutMode(getPreferenceSource().getLayoutSetting());
+ getDrawerFigure().setLayoutMode(getLayoutSetting());
boolean showPin = getPreferenceSource().getAutoCollapseSetting()
== PaletteViewerPreferences.COLLAPSE_AS_NEEDED;
getDrawerFigure().showPin(showPin);
Color background = getDrawer().getDrawerType().equals(
- PaletteTemplateEntry.PALETTE_TYPE_TEMPLATE) ? ColorConstants.listBackground : null;
+ PaletteTemplateEntry.PALETTE_TYPE_TEMPLATE) ? PaletteColorUtil.WIDGET_LIST_BACKGROUND
+ : null;
getDrawerFigure().getScrollpane().setBackgroundColor(background);
}
Index: src/org/eclipse/gef/internal/ui/palette/editparts/GroupEditPart.java
===================================================================
RCS file: /cvsroot/tools/org.eclipse.gef/plugins/org.eclipse.gef/src/org/eclipse/gef/internal/ui/palette/editparts/GroupEditPart.java,v
retrieving revision 1.9
diff -u -r1.9 GroupEditPart.java
--- src/org/eclipse/gef/internal/ui/palette/editparts/GroupEditPart.java 19 Oct 2007 19:47:06 -0000 1.9
+++ src/org/eclipse/gef/internal/ui/palette/editparts/GroupEditPart.java 22 Feb 2008 14:43:38 -0000
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
+ * Copyright (c) 2000, 2008 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -10,11 +10,13 @@
*******************************************************************************/
package org.eclipse.gef.internal.ui.palette.editparts;
+import org.eclipse.draw2d.Figure;
import org.eclipse.draw2d.FlowLayout;
import org.eclipse.draw2d.IFigure;
import org.eclipse.draw2d.LayoutManager;
import org.eclipse.draw2d.ToolbarLayout;
+import org.eclipse.gef.internal.ui.palette.PaletteColorUtil;
import org.eclipse.gef.palette.PaletteContainer;
import org.eclipse.gef.ui.palette.PaletteViewerPreferences;
import org.eclipse.gef.ui.palette.editparts.PaletteEditPart;
@@ -33,14 +35,17 @@
* @see org.eclipse.gef.editparts.AbstractGraphicalEditPart#createFigure()
*/
public IFigure createFigure() {
- return new GroupFigure();
+ Figure figure = new Figure();
+ figure.setOpaque(true);
+ figure.setBackgroundColor(PaletteColorUtil.WIDGET_LIST_BACKGROUND);
+ return figure;
}
/**
* @see org.eclipse.gef.editparts.AbstractEditPart#refreshVisuals()
*/
protected void refreshVisuals() {
- int layout = getPreferenceSource().getLayoutSetting();
+ int layout = getLayoutSetting();
if (cachedLayout == layout)
return;
cachedLayout = layout;
Index: src/org/eclipse/gef/internal/ui/palette/editparts/ToolEntryEditPart.java
===================================================================
RCS file: /cvsroot/tools/org.eclipse.gef/plugins/org.eclipse.gef/src/org/eclipse/gef/internal/ui/palette/editparts/ToolEntryEditPart.java,v
retrieving revision 1.28
diff -u -r1.28 ToolEntryEditPart.java
--- src/org/eclipse/gef/internal/ui/palette/editparts/ToolEntryEditPart.java 19 Oct 2007 19:47:06 -0000 1.28
+++ src/org/eclipse/gef/internal/ui/palette/editparts/ToolEntryEditPart.java 22 Feb 2008 14:43:38 -0000
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
+ * Copyright (c) 2000, 2008 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -27,15 +27,20 @@
import org.eclipse.draw2d.ButtonModel;
import org.eclipse.draw2d.Clickable;
import org.eclipse.draw2d.ColorConstants;
+import org.eclipse.draw2d.Graphics;
import org.eclipse.draw2d.IFigure;
import org.eclipse.draw2d.MarginBorder;
-import org.eclipse.draw2d.ToggleButton;
+import org.eclipse.draw2d.Toggle;
+import org.eclipse.draw2d.geometry.Insets;
+import org.eclipse.draw2d.geometry.Rectangle;
import org.eclipse.gef.AccessibleEditPart;
import org.eclipse.gef.DragTracker;
import org.eclipse.gef.Request;
import org.eclipse.gef.RequestConstants;
+import org.eclipse.gef.internal.ui.palette.PaletteColorUtil;
import org.eclipse.gef.palette.PaletteEntry;
+import org.eclipse.gef.palette.PaletteStack;
import org.eclipse.gef.palette.ToolEntry;
import org.eclipse.gef.ui.palette.PaletteViewerPreferences;
import org.eclipse.gef.ui.palette.editparts.PaletteEditPart;
@@ -226,14 +231,25 @@
};
}
-static final Border BORDER_TOGGLE = new ButtonBorder(ButtonBorder.SCHEMES.TOOLBAR);
+static final Border TOOLBAR_ITEM_BORDER = new ButtonBorder(
+ ButtonBorder.SCHEMES.TOOLBAR);
static final Border COLUMNS_BORDER = new MarginBorder(2, 0, 1, 0);
+static final Border LIST_BORDER = new MarginBorder(3, 16, 2, 0);
+static final Border ICON_BORDER = new MarginBorder(3, 3, 3, 3);
+
public IFigure createFigure() {
- class InactiveToggleButton extends ToggleButton {
- InactiveToggleButton(IFigure contents) {
+ class InactiveToggleButton extends Toggle {
+
+ InactiveToggleButton(IFigure contents) {
super(contents);
setOpaque(false);
setEnabled(true);
+ if (isToolbarItem()
+ && !PaletteStack.PALETTE_TYPE_STACK.equals(getPaletteEntry()
+ .getParent().getType())) {
+ setStyle(Clickable.STYLE_BUTTON | Clickable.STYLE_TOGGLE);
+ setBorder(TOOLBAR_ITEM_BORDER);
+ }
}
public IFigure findMouseEventTargetAt(int x, int y) {
return null;
@@ -245,14 +261,62 @@
super.setEnabled(value);
if (isEnabled()) {
setRolloverEnabled(true);
- setBorder(BORDER_TOGGLE);
+ if (getFlag(STYLE_BUTTON)) {
+ setBorder(TOOLBAR_ITEM_BORDER);
+ }
setForegroundColor(null);
} else {
- setBorder(null);
+ if (getFlag(STYLE_BUTTON)) {
+ setBorder(null);
+ }
setRolloverEnabled(false);
setForegroundColor(ColorConstants.gray);
}
}
+ protected void paintFigure(Graphics graphics) {
+ super.paintFigure(graphics);
+
+ if (!isToolbarItem() && isEnabled()) {
+ ButtonModel model = getModel();
+ if (isRolloverEnabled() && !model.isMouseOver() && !model.isSelected())
+ return;
+
+ if (model.isSelected()) {
+ graphics.setBackgroundColor(PaletteColorUtil.getSelectedColor());
+ } else {
+ graphics.setBackgroundColor(PaletteColorUtil.getHoverColor());
+ }
+ graphics.fillRoundRectangle(getSelectionRectangle(), 3, 3);
+ }
+ }
+
+ protected void paintBorder(Graphics graphics) {
+ // Overridden to draw the focus rectangle the same size as the hover
+ // and selection rectangles.
+
+ if (getBorder() != null)
+ getBorder().paint(this, graphics, NO_INSETS);
+ if (hasFocus()) {
+ graphics.setForegroundColor(ColorConstants.black);
+ graphics.setBackgroundColor(ColorConstants.white);
+ graphics.drawFocus(getSelectionRectangle().getCropped(
+ new Insets(0, 0, 1, 1)));
+ }
+ }
+
+ private Rectangle getSelectionRectangle() {
+ Rectangle rect = Rectangle.SINGLETON;
+ rect.setBounds(getBounds());
+ int layoutMode = getLayoutSetting();
+ if (layoutMode == PaletteViewerPreferences.LAYOUT_LIST
+ || layoutMode == PaletteViewerPreferences.LAYOUT_DETAILS) {
+ rect.width = customLabel.getPreferredSize().width + 17;
+ rect.x += 11;
+ }
+ rect.intersect(getBounds());
+ return rect;
+ }
+
}
customLabel = new DetailedLabelFigure();
@@ -307,8 +371,7 @@
*/
protected String getToolTipText() {
String result = null;
- if (getPreferenceSource().getLayoutSetting()
- != PaletteViewerPreferences.LAYOUT_DETAILS) {
+ if (getLayoutSetting() != PaletteViewerPreferences.LAYOUT_DETAILS) {
result = super.getToolTipText();
}
return result;
@@ -336,13 +399,20 @@
setImageDescriptor(entry.getLargeIcon());
else
setImageDescriptor(entry.getSmallIcon());
- int layoutMode = getPreferenceSource().getLayoutSetting();
+ int layoutMode = getLayoutSetting();
customLabel.setLayoutMode(layoutMode);
- if (layoutMode == PaletteViewerPreferences.LAYOUT_COLUMNS
- || layoutMode == PaletteViewerPreferences.LAYOUT_DETAILS)
+ if (layoutMode == PaletteViewerPreferences.LAYOUT_COLUMNS) {
customLabel.setBorder(COLUMNS_BORDER);
- else
- customLabel.setBorder(null);
+ } else if (layoutMode == PaletteViewerPreferences.LAYOUT_LIST
+ || layoutMode == PaletteViewerPreferences.LAYOUT_DETAILS) {
+ customLabel.setBorder(LIST_BORDER);
+ } else if (layoutMode == PaletteViewerPreferences.LAYOUT_ICONS
+ && !isToolbarItem()) {
+ customLabel.setBorder(ICON_BORDER);
+ } else {
+ customLabel.setBorder(null);
+ }
+
super.refreshVisuals();
}
Index: src/org/eclipse/gef/internal/ui/palette/editparts/TemplateEditPart.java
===================================================================
RCS file: /cvsroot/tools/org.eclipse.gef/plugins/org.eclipse.gef/src/org/eclipse/gef/internal/ui/palette/editparts/TemplateEditPart.java,v
retrieving revision 1.15
diff -u -r1.15 TemplateEditPart.java
--- src/org/eclipse/gef/internal/ui/palette/editparts/TemplateEditPart.java 19 Oct 2007 19:47:06 -0000 1.15
+++ src/org/eclipse/gef/internal/ui/palette/editparts/TemplateEditPart.java 22 Feb 2008 14:43:38 -0000
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
+ * Copyright (c) 2000, 2008 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -110,8 +110,7 @@
*/
protected String getToolTipText() {
String result = null;
- if (getPreferenceSource().getLayoutSetting()
- != PaletteViewerPreferences.LAYOUT_DETAILS) {
+ if (getLayoutSetting() != PaletteViewerPreferences.LAYOUT_DETAILS) {
result = super.getToolTipText();
}
return result;
@@ -139,7 +138,7 @@
setImageDescriptor(entry.getLargeIcon());
else
setImageDescriptor(entry.getSmallIcon());
- int layoutMode = getPreferenceSource().getLayoutSetting();
+ int layoutMode = getLayoutSetting();
fig.setLayoutMode(layoutMode);
if (layoutMode == PaletteViewerPreferences.LAYOUT_COLUMNS
|| layoutMode == PaletteViewerPreferences.LAYOUT_DETAILS)
Index: src/org/eclipse/gef/internal/ui/palette/editparts/DrawerFigure.java
===================================================================
RCS file: /cvsroot/tools/org.eclipse.gef/plugins/org.eclipse.gef/src/org/eclipse/gef/internal/ui/palette/editparts/DrawerFigure.java,v
retrieving revision 1.40
diff -u -r1.40 DrawerFigure.java
--- src/org/eclipse/gef/internal/ui/palette/editparts/DrawerFigure.java 19 Oct 2007 19:47:06 -0000 1.40
+++ src/org/eclipse/gef/internal/ui/palette/editparts/DrawerFigure.java 22 Feb 2008 14:43:38 -0000
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
+ * Copyright (c) 2000, 2008 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -17,12 +17,9 @@
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
-import org.eclipse.jface.resource.ImageDescriptor;
-
import org.eclipse.draw2d.Animation;
import org.eclipse.draw2d.Border;
import org.eclipse.draw2d.BorderLayout;
-import org.eclipse.draw2d.ButtonBorder;
import org.eclipse.draw2d.ButtonModel;
import org.eclipse.draw2d.ChangeEvent;
import org.eclipse.draw2d.ChangeListener;
@@ -44,12 +41,13 @@
import org.eclipse.draw2d.SchemeBorder;
import org.eclipse.draw2d.ScrollPane;
import org.eclipse.draw2d.Toggle;
-import org.eclipse.draw2d.ToggleButton;
import org.eclipse.draw2d.ToolbarLayout;
import org.eclipse.draw2d.geometry.Dimension;
+import org.eclipse.draw2d.geometry.Insets;
import org.eclipse.draw2d.geometry.Rectangle;
-import org.eclipse.gef.internal.Internal;
+import org.eclipse.gef.internal.InternalImages;
+import org.eclipse.gef.internal.ui.palette.PaletteColorUtil;
import org.eclipse.gef.ui.palette.PaletteMessages;
import org.eclipse.gef.ui.palette.PaletteViewerPreferences;
import org.eclipse.gef.ui.palette.editparts.PaletteToolbarLayout;
@@ -61,26 +59,18 @@
extends Figure
{
-/** Border constant, toolbar scheme **/
-protected static final Border BUTTON_BORDER = new ButtonBorder(
- ButtonBorder.SCHEMES.TOOLBAR);
-
/** Foreground color constant **/
protected static final Color FG_COLOR = FigureUtilities.mixColors(
- ColorConstants.buttonDarker, ColorConstants.button);
+ PaletteColorUtil.WIDGET_NORMAL_SHADOW, PaletteColorUtil.WIDGET_BACKGROUND);
-/*
- * @TODO:Pratik
- * This image needs to go in SharedImages or InternalImages
- */
-/** Pin image **/
-public static final Image PIN = new Image(null, ImageDescriptor.createFromFile(
- Internal.class, "icons/pin_view.gif").getImageData()); //$NON-NLS-1$
+private static final Color PIN_HOTSPOT_COLOR = FigureUtilities.mixColors(
+ PaletteColorUtil.WIDGET_LIST_BACKGROUND,
+ PaletteColorUtil.WIDGET_NORMAL_SHADOW, 0.60);
/** Scrollpane border constant **/
protected static final Border SCROLL_PANE_BORDER = new MarginBorder(2);
/** Title margin border constant **/
-protected static final Border TITLE_MARGIN_BORDER = new MarginBorder(1, 1, 1, 0);
+protected static final Border TITLE_MARGIN_BORDER = new MarginBorder(4, 2, 2, 2);
/** Toggle button border constant**/
protected static final Border TOGGLE_BUTTON_BORDER = new RaisedBorder();
/** Tooltip border constant **/
@@ -92,12 +82,120 @@
private boolean addedScrollpane = false;
private int layoutMode = -1;
-private ToggleButton pinFigure;
+private PinFigure pinFigure;
private ScrollPane scrollpane;
private boolean showPin = true, skipNextEvent;
private EditPartTipHelper tipHelper;
/**
+ * This is the figure for the pinned and unpinned button.
+ */
+private static class PinFigure extends Toggle {
+
+ private static Label tooltip = new Label(PaletteMessages.TOOLTIP_PIN_FIGURE);
+
+ public PinFigure() {
+ super(new ImageFigure(InternalImages.get(InternalImages.IMG_UNPINNED)));
+ setRolloverEnabled(true);
+ setRequestFocusEnabled(false);
+ setToolTip(tooltip);
+ setOpaque(false);
+
+ addChangeListener(new ChangeListener() {
+ public void handleStateChanged(ChangeEvent e) {
+ if (e.getPropertyName().equals(ButtonModel.SELECTED_PROPERTY)) {
+ if (isSelected()) {
+ ((ImageFigure) (getChildren().get(0))).setImage(InternalImages
+ .get(InternalImages.IMG_PINNED));
+ } else {
+ ((ImageFigure) (getChildren().get(0))).setImage(InternalImages
+ .get(InternalImages.IMG_UNPINNED));
+ }
+ }
+ }
+ });
+ }
+
+ protected void paintFigure(Graphics graphics) {
+ super.paintFigure(graphics);
+
+ ButtonModel model = getModel();
+ if (isRolloverEnabled() && model.isMouseOver()) {
+ graphics.setBackgroundColor(PIN_HOTSPOT_COLOR);
+ graphics.fillRoundRectangle(getClientArea().getCopy().shrink(1, 1), 3, 3);
+ }
+ }
+
+ public void setDrawerExpandedState(boolean expanded) {
+ setEnabled(expanded);
+ setToolTip(expanded ? tooltip : null);
+ }
+
+}
+
+/**
+ * This is the figure for the entire drawer label button.
+ */
+private class CollapseToggle
+ extends Toggle {
+
+public CollapseToggle(IFigure contents) {
+ super(contents);
+ setSelected(true);
+ setRequestFocusEnabled(true);
+ addChangeListener(new ChangeListener() {
+
+ public void handleStateChanged(ChangeEvent e) {
+ if (e.getPropertyName().equals(ButtonModel.SELECTED_PROPERTY)) {
+ Animation.markBegin();
+ handleExpandStateChanged();
+ Animation.run(150);
+ } else if (e.getPropertyName().equals(
+ ButtonModel.MOUSEOVER_PROPERTY)) {
+ repaint();
+ }
+ }
+ });
+}
+
+public IFigure getToolTip() {
+ return buildTooltip();
+}
+
+protected void paintFigure(Graphics g) {
+ super.paintFigure(g);
+ Rectangle r = Rectangle.SINGLETON;
+ r.setBounds(getBounds());
+
+ // draw top border of drawer figure
+ g.setForegroundColor(PaletteColorUtil.WIDGET_NORMAL_SHADOW);
+ g.drawLine(r.getTopLeft(), r.getTopRight());
+ g.setForegroundColor(ColorConstants.white);
+ g.drawLine(r.getTopLeft().getTranslated(0, 1), r.getTopRight()
+ .getTranslated(0, 1));
+ r.crop(new Insets(2, 0, 0, 0));
+ if (isExpanded()) {
+ g.setForegroundColor(FigureUtilities.mixColors(
+ PaletteColorUtil.WIDGET_BACKGROUND,
+ PaletteColorUtil.WIDGET_NORMAL_SHADOW, 0.65));
+ g.drawLine(r.getLocation(), r.getTopRight());
+ r.crop(new Insets(1, 0, 0, 0));
+ }
+
+ // draw bottom border of drawer figure
+ if (!isExpanded()) {
+ g.setForegroundColor(ColorConstants.white);
+ g.drawLine(r.getBottomLeft().getTranslated(0, -1), r.getBottomRight()
+ .getTranslated(0, -1));
+ r.crop(new Insets(0, 0, 1, 0));
+ }
+
+ paintToggleGradient(g, r);
+
+}
+}
+
+/**
* Constructor
*
* @param control The Control of the LWS to which this Figure belongs (it is used to
@@ -128,44 +226,13 @@
drawerLabel = new Label();
drawerLabel.setLabelAlignment(Label.LEFT);
- pinFigure = new ToggleButton(new ImageFigure(PIN));
- pinFigure.setBorder(BUTTON_BORDER);
- pinFigure.setRolloverEnabled(true);
- pinFigure.setRequestFocusEnabled(false);
- pinFigure.setToolTip(new Label(PaletteMessages.TOOLTIP_PIN_FIGURE));
+ pinFigure = new PinFigure();
title.add(pinFigure, BorderLayout.RIGHT);
title.add(drawerLabel, BorderLayout.CENTER);
- collapseToggle = new Toggle(title) {
- /**
- * @see org.eclipse.draw2d.Figure#getToolTip()
- */
- public IFigure getToolTip() {
- return buildTooltip();
- }
- protected void paintFigure(Graphics g) {
- super.paintFigure(g);
- Rectangle r = Rectangle.SINGLETON;
- r.setBounds(getBounds());
- r.width = Math.min(50, r.width);
- g.setForegroundColor(FG_COLOR);
- g.fillGradient(Rectangle.SINGLETON, false);
- }
+ collapseToggle = new CollapseToggle(title);
- };
- collapseToggle.setSelected(true);
- collapseToggle.setBorder(TOGGLE_BUTTON_BORDER);
- collapseToggle.setRequestFocusEnabled(true);
- collapseToggle.addChangeListener(new ChangeListener() {
- public void handleStateChanged(ChangeEvent e) {
- if (e.getPropertyName().equals(ButtonModel.SELECTED_PROPERTY)) {
- Animation.markBegin();
- handleExpandStateChanged();
- Animation.run(150);
- }
- }
- });
/*
* @TODO:Pratik
*
@@ -193,6 +260,55 @@
createHoverHelp(control);
}
+/**
+ * Paints the background gradient on the drawer toggle figure.
+ *
+ * @param g
+ * the graphics object
+ * @param rect
+ * the rectangle which the background gradient should cover
+ */
+private void paintToggleGradient(Graphics g, Rectangle rect) {
+ if (isExpanded()) {
+ g.setBackgroundColor(FigureUtilities.mixColors(PaletteColorUtil.WIDGET_BACKGROUND,
+ PaletteColorUtil.WIDGET_LIST_BACKGROUND, 0.85));
+ g.fillRectangle(rect);
+ } else if (collapseToggle.getModel().isMouseOver()) {
+ Color color1 = FigureUtilities.mixColors(
+ PaletteColorUtil.WIDGET_BACKGROUND,
+ PaletteColorUtil.WIDGET_LIST_BACKGROUND, 0.6);
+ Color color2 = FigureUtilities.mixColors(
+ PaletteColorUtil.WIDGET_BACKGROUND,
+ PaletteColorUtil.WIDGET_NORMAL_SHADOW, 0.9);
+ Color color3 = FigureUtilities.mixColors(
+ PaletteColorUtil.WIDGET_BACKGROUND,
+ PaletteColorUtil.WIDGET_NORMAL_SHADOW, 0.95);
+ Color color4 = FigureUtilities.mixColors(
+ PaletteColorUtil.WIDGET_BACKGROUND,
+ PaletteColorUtil.WIDGET_LIST_BACKGROUND, 0.9);
+
+ g.setForegroundColor(color1);
+ g.setBackgroundColor(color2);
+ g.fillGradient(rect.x, rect.y, rect.width, rect.height - 4, true);
+
+ g.setForegroundColor(color2);
+ g.setBackgroundColor(color3);
+ g.fillGradient(rect.x, rect.bottom() - 4, rect.width, 2, true);
+
+ g.setForegroundColor(color3);
+ g.setBackgroundColor(color4);
+ g.fillGradient(rect.x, rect.bottom() - 2, rect.width, 2, true);
+ } else {
+ g.setForegroundColor(FigureUtilities.mixColors(
+ PaletteColorUtil.WIDGET_BACKGROUND,
+ PaletteColorUtil.WIDGET_LIST_BACKGROUND, 0.85));
+ g.setBackgroundColor(FigureUtilities.mixColors(
+ PaletteColorUtil.WIDGET_BACKGROUND,
+ PaletteColorUtil.WIDGET_NORMAL_SHADOW, 0.45));
+ g.fillGradient(rect, true);
+ }
+}
+
private void createHoverHelp(final Control control) {
if (control == null) {
return;
@@ -209,10 +325,8 @@
protected void paintFigure(Graphics graphics) {
Rectangle r = Rectangle.SINGLETON;
r.setBounds(getBounds());
- r.width = Math.min(50, r.width);
- graphics.pushState();
- graphics.setForegroundColor(FG_COLOR);
- graphics.fillGradient(Rectangle.SINGLETON, false);
+ graphics.pushState();
+ paintToggleGradient(graphics, getBounds());
graphics.popState();
super.paintFigure(graphics);
}
@@ -272,6 +386,7 @@
scrollpane.setLayoutManager(new OverlayScrollPaneLayout());
scrollpane.setContents(new Figure());
scrollpane.getContents().setOpaque(true);
+ scrollpane.getContents().setBackgroundColor(PaletteColorUtil.WIDGET_LIST_BACKGROUND);
scrollpane.getContents().setBorder(SCROLL_PANE_BORDER);
}
@@ -335,8 +450,10 @@
remove(scrollpane);
}
- if (pinFigure != null)
+ if (pinFigure != null) {
pinFigure.setVisible(isExpanded() && showPin);
+ pinFigure.setDrawerExpandedState(isExpanded());
+ }
}
/**
Index: src/org/eclipse/gef/internal/ui/palette/editparts/SeparatorEditPart.java
===================================================================
RCS file: /cvsroot/tools/org.eclipse.gef/plugins/org.eclipse.gef/src/org/eclipse/gef/internal/ui/palette/editparts/SeparatorEditPart.java,v
retrieving revision 1.11
diff -u -r1.11 SeparatorEditPart.java
--- src/org/eclipse/gef/internal/ui/palette/editparts/SeparatorEditPart.java 19 Oct 2007 19:47:06 -0000 1.11
+++ src/org/eclipse/gef/internal/ui/palette/editparts/SeparatorEditPart.java 22 Feb 2008 14:43:38 -0000
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
+ * Copyright (c) 2000, 2008 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -18,6 +18,7 @@
import org.eclipse.draw2d.geometry.Insets;
import org.eclipse.draw2d.geometry.Rectangle;
+import org.eclipse.gef.internal.ui.palette.PaletteColorUtil;
import org.eclipse.gef.palette.PaletteSeparator;
import org.eclipse.gef.ui.palette.editparts.PaletteEditPart;
@@ -62,7 +63,7 @@
* @see org.eclipse.draw2d.IFigure#getPreferredSize(int, int)
*/
public Dimension getPreferredSize(int wHint, int hHint) {
- if (getBackgroundColor() == ColorConstants.button)
+ if (getBackgroundColor().equals(PaletteColorUtil.WIDGET_BACKGROUND))
return new Dimension(wHint, 4);
return new Dimension(wHint, 5);
}
@@ -75,12 +76,11 @@
*/
protected void paintFigure(Graphics g) {
Rectangle r = getBounds().getCropped(CROP);
- if (getBackgroundColor() == ColorConstants.listBackground) {
- g.setForegroundColor(ColorConstants.buttonDarker);
- g.drawLine(r.getTopLeft(), r.getTopRight());
- g.drawLine(r.getBottomLeft(), r.getBottomRight());
+ if (getBackgroundColor().equals(PaletteColorUtil.WIDGET_LIST_BACKGROUND)) {
+ g.setForegroundColor(PaletteColorUtil.WIDGET_NORMAL_SHADOW);
+ g.drawLine(r.getLeft(), r.getRight());
} else {
- g.setForegroundColor(ColorConstants.buttonDarker);
+ g.setForegroundColor(PaletteColorUtil.WIDGET_NORMAL_SHADOW);
g.drawLine(r.getBottomLeft(), r.getTopLeft());
g.drawLine(r.getTopLeft(), r.getTopRight());
Index: src/org/eclipse/gef/internal/ui/palette/editparts/PaletteScrollBar.java
===================================================================
RCS file: /cvsroot/tools/org.eclipse.gef/plugins/org.eclipse.gef/src/org/eclipse/gef/internal/ui/palette/editparts/PaletteScrollBar.java,v
retrieving revision 1.14
diff -u -r1.14 PaletteScrollBar.java
--- src/org/eclipse/gef/internal/ui/palette/editparts/PaletteScrollBar.java 30 Mar 2005 21:27:03 -0000 1.14
+++ src/org/eclipse/gef/internal/ui/palette/editparts/PaletteScrollBar.java 22 Feb 2008 14:43:38 -0000
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
+ * Copyright (c) 2000, 2008 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -10,56 +10,40 @@
*******************************************************************************/
package org.eclipse.gef.internal.ui.palette.editparts;
-import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.ImageData;
import org.eclipse.swt.graphics.PaletteData;
import org.eclipse.swt.graphics.RGB;
import org.eclipse.swt.widgets.Display;
-import org.eclipse.draw2d.ArrowButton;
-import org.eclipse.draw2d.Border;
-import org.eclipse.draw2d.ButtonBorder;
import org.eclipse.draw2d.Clickable;
-import org.eclipse.draw2d.ColorConstants;
-import org.eclipse.draw2d.CompoundBorder;
import org.eclipse.draw2d.Graphics;
import org.eclipse.draw2d.IFigure;
import org.eclipse.draw2d.Label;
-import org.eclipse.draw2d.MarginBorder;
import org.eclipse.draw2d.RangeModel;
import org.eclipse.draw2d.ScrollBar;
import org.eclipse.draw2d.ScrollBarLayout;
+import org.eclipse.draw2d.Toggle;
import org.eclipse.draw2d.TreeSearch;
import org.eclipse.draw2d.geometry.Dimension;
import org.eclipse.draw2d.geometry.Insets;
+import org.eclipse.draw2d.geometry.Point;
+import org.eclipse.draw2d.geometry.PointList;
import org.eclipse.draw2d.geometry.Rectangle;
+import org.eclipse.gef.internal.ui.palette.PaletteColorUtil;
+
public final class PaletteScrollBar
extends ScrollBar
{
-private static final ButtonBorder BORDER =
- new ButtonBorder(new ButtonBorder.ButtonScheme(
- new Color[] {ColorConstants.buttonLightest},
- new Color[] {ColorConstants.buttonDarker},
- new Color[] {ColorConstants.buttonDarker},
- new Color[] {ColorConstants.buttonDarker}
- ));
-
-private static final Border CONTRAST = new CompoundBorder(
- new MarginBorder(1, 0, 0, 0) {
- public void paint(IFigure figure, Graphics graphics, Insets insets) {
- if (!((Clickable)figure).getModel().isMouseOver())
- return;
- Rectangle r = getPaintRectangle(figure, insets);
- graphics.setForegroundColor(ColorConstants.button);
- graphics.drawLine(r.x, r.y, r.right(), r.y);
- }
- }, BORDER
-);
+private static final PointList OUTER_DOWN_TRIANGLE = new PointList(3);
+private static final PointList INNER_DOWN_TRIANGLE = new PointList(3);
+private static final PointList OUTER_UP_TRIANGLE = new PointList(3);
+private static final PointList INNER_UP_TRIANGLE = new PointList(3);
-public static final int BUTTON_HEIGHT = 12;
+public static final int BUTTON_HEIGHT = 7;
+private static final int BUTTON_WIDTH = 76;
private static final int SCROLL_TIME = 200;
private static final Image TRANSPARENCY;
@@ -67,12 +51,30 @@
static {
Display display = Display.getCurrent();
PaletteData pData = new PaletteData(0xFF, 0xFF00, 0xFF0000);
- RGB rgb = ColorConstants.button.getRGB();
+ RGB rgb = PaletteColorUtil.INFO_FOREGROUND.getRGB();
int fillColor = pData.getPixel(rgb);
ImageData iData = new ImageData(1, 1, 24, pData);
iData.setPixel(0, 0, fillColor);
- iData.setAlpha(0, 0, 200);
+ iData.setAlpha(0, 0, 15); // 6% transparent -- 255 * 0.06
TRANSPARENCY = new Image(display, iData);
+
+ // TODO: Should I use the Button width here?
+ OUTER_DOWN_TRIANGLE.addPoint(new Point(34, 2));
+ OUTER_DOWN_TRIANGLE.addPoint(new Point(38, 6));
+ OUTER_DOWN_TRIANGLE.addPoint(new Point(42, 2));
+
+ INNER_DOWN_TRIANGLE.addPoint(new Point(35, 2));
+ INNER_DOWN_TRIANGLE.addPoint(new Point(37, 5));
+ INNER_DOWN_TRIANGLE.addPoint(new Point(41, 2));
+
+ OUTER_UP_TRIANGLE.addPoint(new Point(33, 5));
+ OUTER_UP_TRIANGLE.addPoint(new Point(38, 0));
+ OUTER_UP_TRIANGLE.addPoint(new Point(42, 5));
+
+ INNER_UP_TRIANGLE.addPoint(new Point(34, 5));
+ INNER_UP_TRIANGLE.addPoint(new Point(38, 1));
+ INNER_UP_TRIANGLE.addPoint(new Point(42, 5));
+
}
protected Label downLabel;
@@ -88,30 +90,59 @@
}
protected Clickable createDefaultDownButton() {
- return createTransparentArrowButton();
+ return createTransparentArrowButton(true);
}
protected Clickable createDefaultUpButton() {
- return createTransparentArrowButton();
+ return createTransparentArrowButton(false);
}
-private ArrowButton createTransparentArrowButton() {
- ArrowButton button = new ArrowButton() {
+/**
+ * Creates the figure used for the scrollbar button.
+ * @param down true if the arrow should be pointing down; false, if it should be pointing up.
+ * @return a new Toggle
figure for the scroll bar button
+ */
+private Toggle createTransparentArrowButton(final boolean down) {
+ Toggle button = new Toggle() {
protected void paintFigure(Graphics g) {
+ // paint background
if (!getModel().isMouseOver())
g.drawImage(TRANSPARENCY, new Rectangle(0, 0, 1, 1), getBounds());
- else
- super.paintFigure(g);
+ else {
+ g.setBackgroundColor(getModel().isArmed() ? PaletteColorUtil
+ .getSelectedColor()
+ : PaletteColorUtil.getHoverColor());
+ g.fillRectangle(getBounds());
+ }
+
+ // paint triangle
+ g.translate(getLocation());
+ PointList outerPoints = transpose(down ? OUTER_DOWN_TRIANGLE : OUTER_UP_TRIANGLE);
+ PointList innerPoints = transpose(down ? INNER_DOWN_TRIANGLE : INNER_UP_TRIANGLE);
+ g.setBackgroundColor(PaletteColorUtil.WIDGET_LIST_BACKGROUND);
+ g.fillPolygon(outerPoints);
+ g.setBackgroundColor(PaletteColorUtil.WIDGET_DARK_SHADOW);
+ g.fillPolygon(innerPoints);
+ g.translate(getLocation().getNegated());
}
};
button.setRolloverEnabled(true);
- button.setBorder(BORDER);
return button;
}
/**
- * @see org.eclipse.draw2d.Figure#findFigureAt(int, int, TreeSearch)
+ * Transposes a list of points using the transposer
.
+ * @param origPoints the original list of points
+ * @return a new list of transposed points
*/
+private PointList transpose(PointList origPoints) {
+ PointList transposedPoints = new PointList(origPoints.size());
+ for (int i = 0; i < origPoints.size(); i++) {
+ transposedPoints.addPoint(transposer.t(origPoints.getPoint(i)));
+ }
+ return transposedPoints;
+}
+
public IFigure findFigureAt(int x, int y, TreeSearch search) {
IFigure result = super.findFigureAt(x, y, search);
if (result != this)
@@ -119,9 +150,6 @@
return null;
}
-/**
- * @see org.eclipse.draw2d.Figure#getPreferredSize(int, int)
- */
public Dimension getPreferredSize(int wHint, int hHint) {
return new Dimension(wHint, hHint);
}
@@ -131,17 +159,14 @@
setLayoutManager(new ScrollBarLayout(transposer) {
protected Rectangle layoutButtons(ScrollBar scrollBar) {
Rectangle bounds = transposer.t(scrollBar.getClientArea());
- Dimension buttonSize = new Dimension(bounds.width, BUTTON_HEIGHT);
+ Dimension buttonSize = new Dimension(BUTTON_WIDTH, BUTTON_HEIGHT);
- getButtonUp().setBounds(transposer.t(
- new Rectangle(bounds.getTopLeft(), buttonSize)));
- Rectangle r = new Rectangle (
- bounds.x, bounds.bottom() - buttonSize.height,
- buttonSize.width, buttonSize.height);
+ getButtonUp().setBounds(
+ transposer.t(new Rectangle(bounds.getTop().getTranslated(
+ -(buttonSize.width / 2), 0), buttonSize)));
+ Rectangle r = new Rectangle(bounds.getBottom().getTranslated(
+ -(buttonSize.width / 2), -buttonSize.height), buttonSize);
getButtonDown().setBounds(transposer.t(r));
- if (scrollBar.getBackgroundColor() == ColorConstants.listBackground
- && getButtonDown().getBorder() != CONTRAST)
- getButtonDown().setBorder(CONTRAST);
Rectangle trackBounds = bounds.getCropped(
new Insets(buttonSize.height, 0, buttonSize.height, 0));
RangeModel model = scrollBar.getRangeModel();
@@ -157,16 +182,10 @@
setOpaque(false);
}
-/**
- * @see org.eclipse.draw2d.ScrollBar#stepDown()
- */
protected void stepDown() {
timedStep(false);
}
-/**
- * @see org.eclipse.draw2d.ScrollBar#stepUp()
- */
protected void stepUp() {
timedStep(true);
}
Index: src/org/eclipse/gef/ui/palette/editparts/PaletteEditPart.java
===================================================================
RCS file: /cvsroot/tools/org.eclipse.gef/plugins/org.eclipse.gef/src/org/eclipse/gef/ui/palette/editparts/PaletteEditPart.java,v
retrieving revision 1.27
diff -u -r1.27 PaletteEditPart.java
--- src/org/eclipse/gef/ui/palette/editparts/PaletteEditPart.java 19 Oct 2007 19:47:06 -0000 1.27
+++ src/org/eclipse/gef/ui/palette/editparts/PaletteEditPart.java 22 Feb 2008 14:43:39 -0000
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
+ * Copyright (c) 2000, 2008 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -39,6 +39,7 @@
import org.eclipse.gef.palette.PaletteContainer;
import org.eclipse.gef.palette.PaletteEntry;
import org.eclipse.gef.palette.PaletteSeparator;
+import org.eclipse.gef.palette.PaletteToolbar;
import org.eclipse.gef.tools.SelectEditPartTracker;
import org.eclipse.gef.ui.palette.PaletteMessages;
import org.eclipse.gef.ui.palette.PaletteViewer;
@@ -301,8 +302,7 @@
* @since 3.2
*/
protected boolean nameNeededInToolTip() {
- return getPreferenceSource().getLayoutSetting()
- == PaletteViewerPreferences.LAYOUT_ICONS;
+ return getLayoutSetting() == PaletteViewerPreferences.LAYOUT_ICONS;
}
/**
@@ -413,4 +413,30 @@
}
}
+/**
+ * Returns the current layout setting.
+ *
+ * @return the current layout setting.
+ * @see PaletteViewerPreferences#getLayoutSetting()
+ * @since 3.4
+ */
+protected int getLayoutSetting() {
+ if (getParent() instanceof PaletteEditPart) {
+ return ((PaletteEditPart) getParent()).getLayoutSetting();
+ }
+ return getPreferenceSource().getLayoutSetting();
+}
+
+/**
+ * Returns true if this item is on the palette toolbar.
+ *
+ * @return true if this item is on the palette toolbar; false otherwise
+ * @since 3.4
+ */
+protected boolean isToolbarItem() {
+ if (getParent() instanceof PaletteEditPart) {
+ return ((PaletteEditPart) getParent()).isToolbarItem();
+ }
+ return false;
+}
}
Index: src/org/eclipse/gef/ui/palette/FlyoutPaletteComposite.java
===================================================================
RCS file: /cvsroot/tools/org.eclipse.gef/plugins/org.eclipse.gef/src/org/eclipse/gef/ui/palette/FlyoutPaletteComposite.java,v
retrieving revision 1.50
diff -u -r1.50 FlyoutPaletteComposite.java
--- src/org/eclipse/gef/ui/palette/FlyoutPaletteComposite.java 2 Jan 2008 19:30:22 -0000 1.50
+++ src/org/eclipse/gef/ui/palette/FlyoutPaletteComposite.java 22 Feb 2008 14:43:38 -0000
@@ -33,9 +33,7 @@
import org.eclipse.swt.events.MouseTrackAdapter;
import org.eclipse.swt.events.MouseTrackListener;
import org.eclipse.swt.graphics.Font;
-import org.eclipse.swt.graphics.FontData;
import org.eclipse.swt.graphics.GC;
-import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.widgets.Canvas;
@@ -56,7 +54,6 @@
import org.eclipse.jface.action.IMenuListener;
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.action.MenuManager;
-import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.resource.JFaceResources;
import org.eclipse.jface.util.IPropertyChangeListener;
import org.eclipse.jface.util.TransferDropTargetListener;
@@ -66,7 +63,6 @@
import org.eclipse.ui.IViewReference;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.XMLMemento;
import org.eclipse.ui.internal.DragCursors;
@@ -76,25 +72,24 @@
import org.eclipse.draw2d.Button;
import org.eclipse.draw2d.ButtonBorder;
import org.eclipse.draw2d.ColorConstants;
+import org.eclipse.draw2d.FigureUtilities;
import org.eclipse.draw2d.FocusEvent;
import org.eclipse.draw2d.FocusListener;
import org.eclipse.draw2d.Graphics;
import org.eclipse.draw2d.IFigure;
-import org.eclipse.draw2d.ImageFigure;
-import org.eclipse.draw2d.ImageUtilities;
import org.eclipse.draw2d.Label;
import org.eclipse.draw2d.LightweightSystem;
import org.eclipse.draw2d.MarginBorder;
import org.eclipse.draw2d.PositionConstants;
-import org.eclipse.draw2d.SWTGraphics;
+import org.eclipse.draw2d.Triangle;
import org.eclipse.draw2d.geometry.Dimension;
-import org.eclipse.draw2d.geometry.Insets;
import org.eclipse.gef.GraphicalViewer;
import org.eclipse.gef.SharedCursors;
import org.eclipse.gef.dnd.TemplateTransfer;
import org.eclipse.gef.internal.GEFMessages;
-import org.eclipse.gef.internal.Internal;
+import org.eclipse.gef.internal.InternalImages;
+import org.eclipse.gef.internal.ui.palette.PaletteColorUtil;
import org.eclipse.gef.ui.views.palette.PaletteView;
/**
@@ -124,6 +119,10 @@
private static final int STATE_HIDDEN = 8;
private static final int STATE_EXPANDED = 1;
+
+private static final Dimension ARROW_SIZE = new Dimension(6, 11);
+private static final int SASH_BUTTON_WIDTH = 11;
+
/**
* One of the two possible initial states of the flyout palette. This is the default one.
* When in this state, only the flyout palette's sash is visible.
@@ -136,16 +135,12 @@
*/
public static final int STATE_PINNED_OPEN = 4;
-private static final Image LEFT_ARROW = new Image(null, ImageDescriptor.createFromFile(
- Internal.class, "icons/palette_left.gif").getImageData()); //$NON-NLS-1$
-private static final Image RIGHT_ARROW = new Image(null, ImageDescriptor.createFromFile(
- Internal.class, "icons/palette_right.gif").getImageData()); //$NON-NLS-1$
-
private PropertyChangeSupport listeners = new PropertyChangeSupport(this);
private Composite paletteContainer;
private PaletteViewer pViewer, externalViewer;
private IMemento capturedPaletteState;
-private Control graphicalControl, sash;
+private Control graphicalControl;
+private Composite sash;
private PaletteViewerProvider provider;
private FlyoutPreferences prefs;
private Point cachedBounds = new Point(0, 0);
@@ -163,6 +158,7 @@
private int paletteWidth = DEFAULT_PALETTE_SIZE;
private int minWidth = MIN_PALETTE_SIZE;
private int cachedSize = -1, cachedState = -1, cachedLocation = -1;
+private int cachedTitleHeight = 24; // give it a default value
private IPerspectiveListener perspectiveListener = new IPerspectiveListener() {
public void perspectiveActivated(IWorkbenchPage page,
@@ -278,7 +274,7 @@
return new PaletteComposite(this, SWT.NONE);
}
-private Control createSash() {
+private Composite createSash() {
return new Sash(this, SWT.NONE);
}
@@ -368,6 +364,7 @@
layoutComponentsEast(area, sashWidth, pWidth);
else
layoutComponentsWest(area, sashWidth, pWidth);
+ sash.layout();
setRedraw(true);
update();
}
@@ -681,11 +678,10 @@
}
private class Sash extends Composite {
- private Control button, title;
+ private Control button;
public Sash(Composite parent, int style) {
super(parent, style);
button = createFlyoutControlButton(this);
- title = createTitle(this, false);
new SashDragManager();
addMouseTrackListener(new MouseTrackAdapter() {
@@ -714,62 +710,66 @@
}
});
}
- /**
- * @see org.eclipse.swt.widgets.Control#computeSize(int, int, boolean)
- */
+
public Point computeSize(int wHint, int hHint, boolean changed) {
if (isInState(STATE_PINNED_OPEN))
- return new Point(6, 1);
- Point buttonSize = button.computeSize(wHint, hHint);
- Point titleSize = title.computeSize(wHint, hHint);
- return new Point(Math.max(buttonSize.x, titleSize.x) + 2,
- buttonSize.y + titleSize.y + 7);
+ return new Point(3, 3);
+
+ // button size plus two pixels for the two lines to be drawn
+ return new Point(SASH_BUTTON_WIDTH + 2, cachedTitleHeight);
}
private void handleSashDragged(int shiftAmount) {
int newSize = paletteContainer.getBounds().width
+ (dock == PositionConstants.EAST ? -shiftAmount : shiftAmount);
setPaletteWidth(newSize);
}
- /**
- * @see org.eclipse.swt.widgets.Composite#layout(boolean)
- */
public void layout(boolean changed) {
- if (button == null || title == null)
+ if (button == null)
return;
if (isInState(STATE_PINNED_OPEN)) {
- title.setVisible(false);
button.setVisible(false);
return;
}
- title.setVisible(true);
button.setVisible(true);
Rectangle area = getClientArea();
- // 1 pixel margin all around to draw the raised border
- area.x += 1;
- area.y += 1;
- area.width -= 2;
- area.height -= 2;
- button.setBounds(area.x, area.y, area.width, area.width);
- // 5-pixel spacing
- area.y += area.width + 3;
- title.setBounds(area.x, area.y, area.width,
- title.computeSize(-1, -1).y);
+ button.setBounds(area.x + 1, area.y + 1, SASH_BUTTON_WIDTH,
+ cachedTitleHeight - 1);
+
if (transferFocus) {
transferFocus = false;
button.setFocus();
}
}
private void paintSash(GC gc) {
- Rectangle bounds = getBounds();
- gc.setForeground(ColorConstants.buttonLightest);
- gc.drawLine(0, 0, bounds.width, 0);
- gc.drawLine(0, 0, 0, bounds.height);
- gc.setForeground(ColorConstants.buttonDarker);
- gc.drawLine(bounds.width - 1, 0, bounds.width - 1, bounds.height - 1);
- gc.drawLine(0, bounds.height - 1, bounds.width - 1, bounds.height - 1);
- }
+ Rectangle bounds = getBounds();
+ if (isInState(STATE_PINNED_OPEN)) {
+ gc.setBackground(PaletteColorUtil.WIDGET_BACKGROUND);
+ gc.fillRectangle(0, 0, bounds.width, bounds.height);
+
+ gc.setForeground(PaletteColorUtil.WIDGET_LIST_BACKGROUND);
+ gc.drawLine(0, 0, bounds.width, 0);
+ gc.setForeground(PaletteColorUtil.WIDGET_NORMAL_SHADOW);
+ gc.drawLine(0, bounds.height - 1, bounds.width - 1, bounds.height - 1);
+ gc.setForeground(PaletteColorUtil.WIDGET_LIST_BACKGROUND);
+ gc.drawLine(0, 0, 0, bounds.height);
+ gc.setForeground(PaletteColorUtil.WIDGET_NORMAL_SHADOW);
+ gc.drawLine(bounds.width - 1, 0, bounds.width - 1, bounds.height - 1);
+ } else {
+ gc.setForeground(PaletteColorUtil.WIDGET_NORMAL_SHADOW);
+ gc.drawLine(0, 0, 0, bounds.height);
+ gc.drawLine(bounds.width - 1, 0, bounds.width - 1, bounds.height);
+
+ gc.setForeground(PaletteColorUtil.WIDGET_LIST_BACKGROUND);
+ gc.drawLine(1, 0, 1, bounds.height);
+
+ gc.setForeground(FigureUtilities.mixColors(
+ PaletteColorUtil.WIDGET_BACKGROUND, PaletteColorUtil.WIDGET_LIST_BACKGROUND,
+ 0.85));
+ gc.drawLine(2, 0, 2, bounds.height);
+ }
+ }
private void updateState() {
setCursor(isInState(STATE_EXPANDED | STATE_PINNED_OPEN)
? SharedCursors.SIZEWE : null);
@@ -995,27 +995,30 @@
Rectangle area = getClientArea();
if (title.getVisible()) {
+ boolean buttonVisible = button.getVisible();
Point titleSize = title.computeSize(-1, -1);
- Point buttonSize = button.computeSize(-1, -1);
- int height = Math.max(titleSize.y, buttonSize.y);
- buttonSize.x = Math.max(height, buttonSize.x);
+ Point buttonSize = buttonVisible ? button.computeSize(-1, -1)
+ : new Point(0, 0);
+ cachedTitleHeight = Math.max(titleSize.y, buttonSize.y);
+ if (buttonVisible) {
+ buttonSize.x = Math.max(cachedTitleHeight, buttonSize.x);
+ }
if (dock == PositionConstants.EAST) {
int buttonX = area.width - buttonSize.x;
- button.setBounds(buttonX, 0, buttonSize.x, height);
- // leave some space between the button and the title
- title.setBounds(0, 0, buttonX - 2, height);
+ button.setBounds(buttonX, 0, buttonSize.x, cachedTitleHeight);
+ title.setBounds(0, 0, buttonX, cachedTitleHeight);
} else {
- int titleX = buttonSize.x + 2;
- button.setBounds(0, 0, buttonSize.x, height);
- title.setBounds(titleX, 0, area.width - titleX, height);
+ int titleX = buttonSize.x;
+ button.setBounds(0, 0, buttonSize.x, cachedTitleHeight);
+ title.setBounds(titleX, 0, area.width - titleX, cachedTitleHeight);
}
- area.y += height;
- area.height -= height;
+ area.y += cachedTitleHeight;
+ area.height -= cachedTitleHeight;
}
pCtrl.setBounds(area);
}
protected void updateState() {
- title.setVisible(isInState(STATE_PINNED_OPEN));
+ title.setVisible(isInState(STATE_EXPANDED) || isInState(STATE_PINNED_OPEN));
button.setVisible(isInState(STATE_PINNED_OPEN));
if (transferFocus && button.getVisible()) {
transferFocus = false;
@@ -1025,63 +1028,11 @@
}
}
-private class RotatedTitleLabel
- extends ImageFigure {
- public RotatedTitleLabel() {
- FlyoutPaletteComposite.this.addDisposeListener(new DisposeListener() {
- public void widgetDisposed(DisposeEvent e) {
- if (getImage() != null && !getImage().isDisposed())
- getImage().dispose();
- }
- });
- }
- protected void paintFigure(Graphics graphics) {
- if (getImage() == null)
- updateImage();
- super.paintFigure(graphics);
- if (hasFocus())
- graphics.drawFocus(0, 0, bounds.width - 1, bounds.height - 1);
- }
- public void setFont(Font f) {
- if (f != getLocalFont()) {
- super.setFont(f);
- updateImage();
- }
- }
- protected void updateImage() {
- if (getImage() != null)
- getImage().dispose();
- IFigure fig = new TitleLabel(false);
- fig.setFont(getFont());
- fig.setBackgroundColor(ColorConstants.button);
- fig.setOpaque(true);
- // This is a hack. TitleLabel does not return a proper preferred size, since
- // its getInsets() method depends on its current size. To make it work properly,
- // we first make the size really big.
- fig.setSize(Integer.MAX_VALUE, Integer.MAX_VALUE);
- Dimension imageSize = fig.getPreferredSize(-1, -1);
- fig.setSize(imageSize);
- Image img = new Image(null, imageSize.width, imageSize.height);
- GC gc = new GC(img);
- Graphics graphics = new SWTGraphics(gc);
- fig.paint(graphics);
- graphics.dispose();
- gc.dispose();
- setImage(ImageUtilities.createRotatedImage(img));
- img.dispose();
- }
-}
-
private static class TitleLabel extends Label {
- protected static final Border BORDER = new MarginBorder(0, 3, 0, 3);
+ protected static final Border BORDER = new MarginBorder(4, 3, 4, 3);
protected static final Border TOOL_TIP_BORDER = new MarginBorder(0, 2, 0, 2);
- private static final int H_GAP = 4;
- private static final int LINE_LENGTH = 20;
- private static final int MIN_LINE_LENGTH = 6;
- private boolean horizontal;
public TitleLabel(boolean isHorizontal) {
- super(GEFMessages.Palette_Label);
- horizontal = isHorizontal;
+ super(GEFMessages.Palette_Label, InternalImages.get(InternalImages.IMG_PALETTE));
setLabelAlignment(PositionConstants.LEFT);
setBorder(BORDER);
Label tooltip = new Label(getText());
@@ -1089,78 +1040,38 @@
setToolTip(tooltip);
setForegroundColor(ColorConstants.listForeground);
}
- public Insets getInsets() {
- Insets insets = super.getInsets();
- Dimension diff = getBounds().getCropped(insets).getSize()
- .getDifference(getTextBounds().getSize());
- if (diff.width > 0) {
- insets = new Insets(insets);
- int width = Math.min(LINE_LENGTH + H_GAP, diff.width / 2);
- insets.left += width;
- insets.right += width;
- }
- return insets;
- }
public IFigure getToolTip() {
if (isTextTruncated())
return super.getToolTip();
return null;
}
protected void paintFigure(Graphics graphics) {
- super.paintFigure(graphics);
- org.eclipse.draw2d.geometry.Rectangle area =
- getBounds().getCropped(super.getInsets());
- org.eclipse.draw2d.geometry.Rectangle textBounds = getTextBounds();
- // We reduce the width by 1 because FigureUtilities grows it by 1 unnecessarily
- textBounds.width--;
-
- if (hasFocus())
- graphics.drawFocus(bounds.getResized(-1, -1)
- .intersect(textBounds.getExpanded(getInsets())));
- int lineWidth = Math.min((area.width - textBounds.width - H_GAP * 2) / 2,
- LINE_LENGTH);
- if (lineWidth >= MIN_LINE_LENGTH) {
- int centerY = area.height / 2;
- graphics.setForegroundColor(ColorConstants.buttonLightest);
- graphics.drawLine(textBounds.x - H_GAP - lineWidth, centerY - 3,
- textBounds.x - H_GAP, centerY - 3);
- graphics.drawLine(textBounds.x - H_GAP - lineWidth, centerY + 2,
- textBounds.x - H_GAP, centerY + 2);
- graphics.drawLine(textBounds.right() + H_GAP, centerY - 3,
- textBounds.right() + H_GAP + lineWidth, centerY - 3);
- graphics.drawLine(textBounds.right() + H_GAP, centerY + 2,
- textBounds.right() + H_GAP + lineWidth, centerY + 2);
- graphics.setForegroundColor(ColorConstants.buttonDarker);
- graphics.drawLine(textBounds.x - H_GAP - lineWidth, centerY + 3,
- textBounds.x - H_GAP, centerY + 3);
- graphics.drawLine(textBounds.x - H_GAP - lineWidth, centerY - 2,
- textBounds.x - H_GAP, centerY - 2);
- graphics.drawLine(textBounds.right() + H_GAP, centerY - 2,
- textBounds.right() + H_GAP + lineWidth, centerY - 2);
- graphics.drawLine(textBounds.right() + H_GAP, centerY + 3,
- textBounds.right() + H_GAP + lineWidth, centerY + 3);
- if (horizontal) {
- graphics.drawPoint(textBounds.x - H_GAP, centerY + 2);
- graphics.drawPoint(textBounds.x - H_GAP, centerY - 3);
- graphics.drawPoint(textBounds.right() + H_GAP + lineWidth, centerY - 3);
- graphics.drawPoint(textBounds.right() + H_GAP + lineWidth, centerY + 2);
- graphics.setForegroundColor(ColorConstants.buttonLightest);
- graphics.drawPoint(textBounds.x - H_GAP - lineWidth, centerY - 2);
- graphics.drawPoint(textBounds.x - H_GAP - lineWidth, centerY + 3);
- graphics.drawPoint(textBounds.right() + H_GAP, centerY - 2);
- graphics.drawPoint(textBounds.right() + H_GAP, centerY + 3);
- } else {
- graphics.drawPoint(textBounds.x - H_GAP - lineWidth, centerY + 2);
- graphics.drawPoint(textBounds.x - H_GAP - lineWidth, centerY - 3);
- graphics.drawPoint(textBounds.right() + H_GAP, centerY - 3);
- graphics.drawPoint(textBounds.right() + H_GAP, centerY + 2);
- graphics.setForegroundColor(ColorConstants.buttonLightest);
- graphics.drawPoint(textBounds.x - H_GAP, centerY - 2);
- graphics.drawPoint(textBounds.x - H_GAP, centerY + 3);
- graphics.drawPoint(textBounds.right() + H_GAP + lineWidth, centerY - 2);
- graphics.drawPoint(textBounds.right() + H_GAP + lineWidth, centerY + 3);
- }
+ // paint the gradient
+ graphics.pushState();
+ org.eclipse.draw2d.geometry.Rectangle r = org.eclipse.draw2d.geometry.Rectangle.SINGLETON;
+ r.setBounds(getBounds());
+ graphics.setForegroundColor(PaletteColorUtil.WIDGET_LIST_BACKGROUND);
+ graphics.setBackgroundColor(PaletteColorUtil.WIDGET_BACKGROUND);
+ graphics.fillGradient(r, true);
+
+ // draw bottom border
+ graphics.setForegroundColor(PaletteColorUtil.WIDGET_NORMAL_SHADOW);
+ graphics.drawLine(r.getBottomLeft().getTranslated(0, -1), r.getBottomRight()
+ .getTranslated(0, -1));
+
+ graphics.popState();
+
+ // paint the text and icon
+ super.paintFigure(graphics);
+
+ // paint the focus rectangle around the text
+ if (hasFocus()) {
+ org.eclipse.draw2d.geometry.Rectangle textBounds = getTextBounds();
+ // We reduce the width by 1 because FigureUtilities grows it by 1 unnecessarily
+ textBounds.width--;
+ graphics.drawFocus(bounds.getResized(-1, -1)
+ .intersect(textBounds.getExpanded(getInsets())));
}
}
}
@@ -1177,19 +1088,19 @@
size.union(new Dimension(wHint, hHint));
return new org.eclipse.swt.graphics.Point(size.width, size.height);
}
- private Image getButtonImage() {
- Image arrow = null;
+ private int getArrowDirection() {
+ int direction = PositionConstants.EAST;
if (isInState(STATE_EXPANDED | STATE_PINNED_OPEN))
- arrow = dock == PositionConstants.WEST ? LEFT_ARROW : RIGHT_ARROW;
+ direction = dock == PositionConstants.WEST ? PositionConstants.WEST : PositionConstants.EAST;
else
- arrow = dock == PositionConstants.WEST ? RIGHT_ARROW : LEFT_ARROW;
+ direction = dock == PositionConstants.WEST ? PositionConstants.EAST : PositionConstants.WEST;
if (isMirrored()) {
- if (arrow == LEFT_ARROW)
- arrow = RIGHT_ARROW;
+ if (direction == PositionConstants.WEST)
+ direction = PositionConstants.EAST;
else
- arrow = LEFT_ARROW;
+ direction = PositionConstants.WEST;
}
- return arrow;
+ return direction;
}
private String getButtonTooltipText() {
if (isInState(STATE_COLLAPSED))
@@ -1200,7 +1111,7 @@
setCursor(SharedCursors.ARROW);
lws = new LightweightSystem();
lws.setControl(this);
- final ImageButton b = new ImageButton(getButtonImage());
+ final ArrowButton b = new ArrowButton(getArrowDirection());
b.setRolloverEnabled(true);
b.setBorder(new ButtonBorder(ButtonBorder.SCHEMES.TOOLBAR));
b.addActionListener(new ActionListener() {
@@ -1215,10 +1126,10 @@
listeners.addPropertyChangeListener(new PropertyChangeListener() {
public void propertyChange(PropertyChangeEvent evt) {
if (evt.getPropertyName().equals(PROPERTY_STATE)) {
- b.setImage(getButtonImage());
+ b.setDirection(getArrowDirection());
setToolTipText(getButtonTooltipText());
} else if (evt.getPropertyName().equals(PROPERTY_DOCK_LOCATION))
- b.setImage(getButtonImage());
+ b.setDirection(getArrowDirection());
}
});
lws.setContents(b);
@@ -1241,15 +1152,62 @@
}
});
}
- private class ImageButton extends Button {
- public ImageButton(Image img) {
- super();
- setContents(new ImageFigure(img));
- }
- public void setImage(Image img) {
- ((ImageFigure)getChildren().get(0)).setImage(img);
- }
- }
+
+ private class ArrowButton
+ extends Button {
+
+ private Triangle triangle;
+
+ /**
+ * Creates a new instance
+ *
+ * @param direction
+ * the direction the arrow should face (PositionConstants.RIGHT or
+ * PositionConstants.LEFT)
+ */
+ public ArrowButton(int direction) {
+ super();
+ setDirection(direction);
+
+ triangle = new Triangle();
+ triangle.setOutline(true);
+ triangle.setBackgroundColor(PaletteColorUtil.WIDGET_LIST_BACKGROUND);
+ triangle.setForegroundColor(PaletteColorUtil.WIDGET_DARK_SHADOW);
+ setContents(triangle);
+ }
+
+ public void setDirection(int direction) {
+ if (triangle != null) {
+ triangle.setDirection(direction);
+ }
+ }
+
+ protected void layout() {
+ org.eclipse.draw2d.geometry.Rectangle clientArea = getBounds();
+
+ triangle.setBounds(new org.eclipse.draw2d.geometry.Rectangle(clientArea
+ .getCenter().getTranslated(-ARROW_SIZE.width / 2,
+ -ARROW_SIZE.height / 2), ARROW_SIZE));
+ }
+
+ protected void paintFigure(Graphics graphics) {
+ super.paintFigure(graphics);
+
+ // paint the gradient
+ graphics.pushState();
+ org.eclipse.draw2d.geometry.Rectangle r = org.eclipse.draw2d.geometry.Rectangle.SINGLETON;
+ r.setBounds(getBounds());
+ graphics.setForegroundColor(PaletteColorUtil.WIDGET_LIST_BACKGROUND);
+ graphics.setBackgroundColor(PaletteColorUtil.WIDGET_BACKGROUND);
+ graphics.fillGradient(r, true);
+ graphics.popState();
+
+ // draw bottom border
+ graphics.setForegroundColor(PaletteColorUtil.WIDGET_NORMAL_SHADOW);
+ graphics.drawLine(r.getBottomLeft().getTranslated(0, -1), r.getBottomRight()
+ .getTranslated(0, -1));
+ }
+ }
}
private class TitleCanvas extends Canvas {
@@ -1268,12 +1226,7 @@
return new org.eclipse.swt.graphics.Point(size.width, size.height);
}
private void init(boolean isHorizontal) {
- IFigure fig;
- if (isHorizontal)
- fig = new TitleLabel(true);
- else
- fig = new RotatedTitleLabel();
- final IFigure contents = fig;
+ final IFigure contents = new TitleLabel(true);
contents.setRequestFocusEnabled(true);
contents.setFocusTraversable(true);
contents.addFocusListener(new FocusListener() {
@@ -1381,7 +1334,6 @@
private final String fontName = getFontType();
private List registrants = new ArrayList();
private Font titleFont;
- private boolean newFontCreated = false;
private final IPropertyChangeListener fontListener = new IPropertyChangeListener() {
public void propertyChange(org.eclipse.jface.util.PropertyChangeEvent event) {
if (fontName.equals(event.getProperty()))
@@ -1391,27 +1343,9 @@
private FontManager() {
}
protected final Font createTitleFont() {
- newFontCreated = false;
- FontData[] data = JFaceResources.getFont(fontName).getFontData();
- for (int i = 0; i < data.length; i++)
- if ((data[i].getStyle() & SWT.BOLD) == 0) {
- /*
- * @TODO:Pratik need to test this in an environment where there are
- * multiple FontDatas for a font
- */
- // Any problems with style settings (eg., in the case of a font that
- // does not support bold case), will cause the font to ignore that style
- // setting.
- data[i].setStyle(data[i].getStyle() | SWT.BOLD);
- newFontCreated = true;
- }
- if (newFontCreated)
- return new Font(Display.getCurrent(), data);
return JFaceResources.getFont(fontName);
}
protected void dispose() {
- if (newFontCreated && titleFont != null && !titleFont.isDisposed())
- titleFont.dispose();
titleFont = null;
JFaceResources.getFontRegistry().removeListener(fontListener);
}
Index: src/org/eclipse/gef/ui/palette/PaletteEditPartFactory.java
===================================================================
RCS file: /cvsroot/tools/org.eclipse.gef/plugins/org.eclipse.gef/src/org/eclipse/gef/ui/palette/PaletteEditPartFactory.java,v
retrieving revision 1.22
diff -u -r1.22 PaletteEditPartFactory.java
--- src/org/eclipse/gef/ui/palette/PaletteEditPartFactory.java 16 Sep 2005 21:08:34 -0000 1.22
+++ src/org/eclipse/gef/ui/palette/PaletteEditPartFactory.java 22 Feb 2008 14:43:39 -0000
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
+ * Copyright (c) 2000, 2008 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -19,6 +19,7 @@
import org.eclipse.gef.internal.ui.palette.editparts.SliderPaletteEditPart;
import org.eclipse.gef.internal.ui.palette.editparts.TemplateEditPart;
import org.eclipse.gef.internal.ui.palette.editparts.ToolEntryEditPart;
+import org.eclipse.gef.internal.ui.palette.editparts.ToolbarEditPart;
import org.eclipse.gef.palette.PaletteContainer;
import org.eclipse.gef.palette.PaletteDrawer;
import org.eclipse.gef.palette.PaletteEntry;
@@ -27,6 +28,7 @@
import org.eclipse.gef.palette.PaletteSeparator;
import org.eclipse.gef.palette.PaletteStack;
import org.eclipse.gef.palette.PaletteTemplateEntry;
+import org.eclipse.gef.palette.PaletteToolbar;
/**
* Factory to create EditParts for different PaletteEntries.
@@ -63,6 +65,8 @@
if (PaletteGroup.PALETTE_TYPE_GROUP.equals(type)
|| PaletteContainer.PALETTE_TYPE_UNKNOWN.equals(type))
return createGroupEditPart(parentEditPart, model);
+ if (PaletteToolbar.PALETTE_TYPE_TOOLBAR_GROUP.equals(type))
+ return createToolbarEditPart(parentEditPart, model);
}
if (model instanceof PaletteTemplateEntry)
return createTemplateEditPart(parentEditPart, model);
@@ -118,6 +122,17 @@
}
/**
+ * Create ToolbarEditPart - edit part for PaletteToolbar
+ *
+ * @param parentEditPart the parent of the new editpart to be created
+ * @param model the PaletteToolbar
+ * @return the newly created EditPart
+ */
+protected EditPart createToolbarEditPart(EditPart parentEditPart, Object model) {
+ return new ToolbarEditPart((PaletteToolbar)model);
+}
+
+/**
* Create SliderPaletteEditPart - edit part for PaletteRoot
*
* @param parentEditPart the parent of the new editpart to be created
Index: src/org/eclipse/gef/internal/ui/palette/PaletteColorUtil.java
===================================================================
RCS file: src/org/eclipse/gef/internal/ui/palette/PaletteColorUtil.java
diff -N src/org/eclipse/gef/internal/ui/palette/PaletteColorUtil.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ src/org/eclipse/gef/internal/ui/palette/PaletteColorUtil.java 1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,81 @@
+/*******************************************************************************
+ * Copyright (c) 2008 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.gef.internal.ui.palette;
+
+import org.eclipse.swt.graphics.Color;
+import org.eclipse.swt.widgets.Display;
+
+import org.eclipse.draw2d.ColorConstants;
+
+/**
+ * A class to keep miscellaneous palette color utilities.
+ *
+ * @author crevells
+ * @since 3.4
+ */
+public class PaletteColorUtil {
+
+public static final Color WIDGET_BACKGROUND = ColorConstants.button;
+
+public static final Color WIDGET_NORMAL_SHADOW = ColorConstants.buttonDarker;
+
+public static final Color WIDGET_DARK_SHADOW = ColorConstants.buttonDarkest;
+
+public static final Color WIDGET_LIST_BACKGROUND = ColorConstants.listBackground;
+
+public static final Color INFO_FOREGROUND = ColorConstants.tooltipForeground;
+
+private static final Color HOVER_COLOR = new Color(null, 254, 237, 205);
+
+private static final Color SELECTED_COLOR = new Color(null, 224, 233, 246);
+
+private static final Color HOVER_COLOR_HICONTRAST = new Color(null, 0, 128, 0);
+
+private static final Color SELECTED_COLOR_HICONTRAST = new Color(null, 128, 0,
+ 128);
+
+/**
+ * Gets the color to be used when hovering over palette items. The color differs
+ * in high contrast mode.
+ *
+ * @return the hover color
+ * @since 3.4
+ */
+public static Color getHoverColor() {
+ Display display = Display.getCurrent();
+ if (display == null) {
+ display = Display.getDefault();
+ }
+ if (display.getHighContrast()) {
+ return HOVER_COLOR_HICONTRAST;
+ }
+ return HOVER_COLOR;
+}
+
+/**
+ * Gets the color to be used when selecting palette items. The color differs in
+ * high contrast mode.
+ *
+ * @return the selected color
+ * @since 3.4
+ */
+public static Color getSelectedColor() {
+ Display display = Display.getCurrent();
+ if (display == null) {
+ display = Display.getDefault();
+ }
+ if (display.getHighContrast()) {
+ return SELECTED_COLOR_HICONTRAST;
+ }
+ return SELECTED_COLOR;
+}
+}
Index: src/org/eclipse/gef/internal/ui/palette/editparts/ToolbarEditPart.java
===================================================================
RCS file: src/org/eclipse/gef/internal/ui/palette/editparts/ToolbarEditPart.java
diff -N src/org/eclipse/gef/internal/ui/palette/editparts/ToolbarEditPart.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ src/org/eclipse/gef/internal/ui/palette/editparts/ToolbarEditPart.java 1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,78 @@
+/*******************************************************************************
+ * Copyright (c) 2008 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.gef.internal.ui.palette.editparts;
+
+import org.eclipse.draw2d.Figure;
+import org.eclipse.draw2d.FigureUtilities;
+import org.eclipse.draw2d.Graphics;
+import org.eclipse.draw2d.IFigure;
+import org.eclipse.draw2d.MarginBorder;
+
+import org.eclipse.gef.internal.ui.palette.PaletteColorUtil;
+import org.eclipse.gef.palette.PaletteToolbar;
+import org.eclipse.gef.ui.palette.PaletteViewerPreferences;
+
+/**
+ * An editpart for the PaletteToolbar
.
+ *
+ * @author crevells
+ * @since 3.4
+ */
+public class ToolbarEditPart
+ extends GroupEditPart {
+
+/**
+ * Creates a new instance.
+ *
+ * @param model
+ * the PaletteToolbar
+ */
+public ToolbarEditPart(PaletteToolbar model) {
+ super(model);
+}
+
+public IFigure createFigure() {
+ IFigure figure = new Figure() {
+
+ protected void paintFigure(Graphics graphics) {
+ super.paintFigure(graphics);
+
+ // draw top border
+ graphics.setForegroundColor(PaletteColorUtil.WIDGET_LIST_BACKGROUND);
+ graphics.drawLine(getBounds().getTopLeft(), getBounds()
+ .getTopRight());
+
+ // draw bottom border
+ graphics.setForegroundColor(FigureUtilities.mixColors(
+ PaletteColorUtil.WIDGET_BACKGROUND,
+ PaletteColorUtil.WIDGET_NORMAL_SHADOW, 0.7));
+ graphics.drawLine(getBounds().getBottomLeft().getTranslated(0, -1),
+ getBounds().getBottomRight().getTranslated(0, -1));
+ }
+
+ };
+ figure.setOpaque(true);
+ figure.setBackgroundColor(PaletteColorUtil.WIDGET_BACKGROUND);
+ figure.setBorder(new MarginBorder(2, 1, 1, 1));
+
+ return figure;
+}
+
+protected int getLayoutSetting() {
+ return PaletteViewerPreferences.LAYOUT_ICONS;
+}
+
+protected boolean isToolbarItem() {
+ return true;
+}
+
+}
Index: src/org/eclipse/gef/palette/PaletteToolbar.java
===================================================================
RCS file: src/org/eclipse/gef/palette/PaletteToolbar.java
diff -N src/org/eclipse/gef/palette/PaletteToolbar.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ src/org/eclipse/gef/palette/PaletteToolbar.java 1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,61 @@
+/*******************************************************************************
+ * Copyright (c) 2008 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.gef.palette;
+
+import java.util.List;
+
+/**
+ * A PaletteGroup consists of a group of
+ * {@link org.eclipse.gef.palette.PaletteEntry} objects that are uncollapsible .
+ * The user modification level is set to
+ * {@link PaletteEntry#PERMISSION_NO_MODIFICATION}, meaning that the entries
+ * cannot be reordered.
+ *
+ * @author crevells
+ * @since 3.4
+ */
+public class PaletteToolbar
+ extends PaletteContainer {
+
+/**
+ * Type Identifier for a palette group that looks like a toolbar and only
+ * supports icons mode.
+ *
+ * @since 3.4
+ */
+public static final String PALETTE_TYPE_TOOLBAR_GROUP = "Palette_Toolbar_Group";//$NON-NLS-1$
+
+/**
+ * Creates a new PaletteGroup with the given label
+ *
+ * @param label
+ * the label
+ */
+public PaletteToolbar(String label) {
+ super(label, null, null, PALETTE_TYPE_TOOLBAR_GROUP);
+ setUserModificationPermission(PERMISSION_NO_MODIFICATION);
+}
+
+/**
+ * Creates a new PaletteGroup with the given label and list of
+ * {@link PaletteEntry Palette Entries}.
+ *
+ * @param label
+ * the label
+ * @param children
+ * the list of PaletteEntry children
+ */
+public PaletteToolbar(String label, List children) {
+ this(label);
+ addAll(children);
+}
+
+}