/* ****************************************************************************** * Copyright (c) 2006-2012 XMind Ltd. and others. * * This file is a part of XMind 3. XMind releases 3 and * above are dual-licensed under the Eclipse Public License (EPL), * which is available at http://www.eclipse.org/legal/epl-v10.html * and the GNU Lesser General Public License (LGPL), * which is available at http://www.gnu.org/licenses/lgpl.html * See http://www.xmind.net/license.html for details. * * Contributors: * XMind Ltd. - initial API and implementation *******************************************************************************/ package org.xmind.ui.gallery; import org.eclipse.draw2d.IFigure; import org.eclipse.jface.viewers.IBaseLabelProvider; import org.eclipse.jface.viewers.IColorProvider; import org.eclipse.jface.viewers.IFontProvider; import org.eclipse.jface.viewers.ILabelProvider; import org.xmind.gef.draw2d.ITextFigure; import org.xmind.gef.part.Decorator; import org.xmind.gef.part.IGraphicalPart; import org.xmind.gef.util.Properties; public class FrameDecorator extends Decorator { public static final FrameDecorator DEFAULT = new FrameDecorator(); // public void activate(IGraphicalPart part, IFigure figure) { // super.activate(part, figure); // createContents(part, part.getContentPane()); // } // // protected void createContents(IGraphicalPart part, IFigure contentPane) { // SizeableImageFigure imageFigure = new SizeableImageFigure(); // contentPane.add(imageFigure); // } public void decorate(IGraphicalPart part, IFigure figure) { super.decorate(part, figure); FrameFigure frame = (FrameFigure) part.getFigure(); Object model = part.getModel(); GalleryViewer viewer = (GalleryViewer) part.getSite().getViewer(); Properties properties = viewer.getProperties(); IBaseLabelProvider labelProvider = viewer.getLabelProvider(); boolean hideTitle = properties.getBoolean(GalleryViewer.HideTitle, false); frame.setHideTitle(hideTitle); boolean flat = properties.getBoolean(GalleryViewer.FlatFrames, false); frame.setFlat(flat); int titlePlacement = properties.getInteger( GalleryViewer.TitlePlacement, GalleryViewer.TITLE_TOP); frame.setTitlePlacement(titlePlacement); if (!hideTitle) { decorateTitle(frame.getTitle(), model, labelProvider); } // decorateContent(part, model, properties, labelProvider); } // protected void decorateContent(IGraphicalPart part, Object model, // Properties properties, IBaseLabelProvider labelProvider) { // Image image = getImage(model, labelProvider); // IFigure contentPane = part.getContentPane(); // if (!contentPane.getChildren().isEmpty()) { // Object imageFigure = contentPane.getChildren().get(0); // if (imageFigure instanceof SizeableImageFigure) { // decorateImage((SizeableImageFigure) imageFigure, image, // properties); // } // } // } private String getText(Object element, IBaseLabelProvider labelProvider) { if (labelProvider instanceof ILabelProvider) return ((ILabelProvider) labelProvider).getText(element); return null; } // private Image getImage(Object element, IBaseLabelProvider labelProvider) { // if (labelProvider instanceof ILabelProvider) // return ((ILabelProvider) labelProvider).getImage(element); // return null; // } // // protected void decorateImage(SizeableImageFigure imageFigure, Image image, // Properties properties) { // imageFigure.setImage(image); // boolean stretched = properties.getBoolean(GalleryViewer.ImageStretched, // false); // boolean constained = properties.getBoolean( // GalleryViewer.ImageConstrained, false); // imageFigure.setConstrained(constained); // imageFigure.setStretched(stretched); // Dimension size = (Dimension) properties // .get(GalleryViewer.FrameContentSize); // if (size == null) { // imageFigure.setPreferredSize(imageFigure.getImageSize()); // } else { // imageFigure.setPreferredSize(size); // } // } protected void decorateTitle(ITextFigure titleFigure, Object model, IBaseLabelProvider labelProvider) { String text = getText(model, labelProvider); if (text == null) text = ""; //$NON-NLS-1$ titleFigure.setText(text); if (labelProvider instanceof IFontProvider) { IFontProvider fontProvider = (IFontProvider) labelProvider; titleFigure.setFont(fontProvider.getFont(model)); } if (labelProvider instanceof IColorProvider) { IColorProvider colorProvider = (IColorProvider) labelProvider; titleFigure.setForegroundColor(colorProvider.getForeground(model)); titleFigure.setBackgroundColor(colorProvider.getBackground(model)); } } }