com.rcp.wbw.demo.editor.SWTPlotAppearanceEditor.java Source code

Java tutorial

Introduction

Here is the source code for com.rcp.wbw.demo.editor.SWTPlotAppearanceEditor.java

Source

/*
 * ===========================================================
 * JFreeChart : a free chart library for the Java(tm) platform
 * ===========================================================
 * 
 * (C) Copyright 2000-2008, by Object Refinery Limited and Contributors.
 * 
 * Project Info: http://www.jfree.org/jfreechart/index.html
 * 
 * This library is free software; you can redistribute it and/or modify it
 * under the terms of the GNU Lesser General Public License as published by
 * the Free Software Foundation; either version 2.1 of the License, or
 * (at your option) any later version.
 * 
 * This library is distributed in the hope that it will be useful, but
 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
 * License for more details.
 * 
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
 * USA.
 * 
 * [Java is a trademark or registered trademark of Sun Microsystems, Inc.
 * in the United States and other countries.]
 * 
 * ----------------------------
 * SWTPlotAppearanceEditor.java
 * ----------------------------
 * (C) Copyright 2006-2008, by Henry Proudhon and Contributors.
 * 
 * Original Author: Henry Proudhon (henry.proudhon AT ensmp.fr);
 * Contributor(s): David Gilbert (for Object Refinery Limited);
 * 
 * Changes
 * -------
 * 01-Aug-2006 : New class (HP);
 * 18-Dec-2008 : Use ResourceBundleWrapper - see patch 1607918 by
 * Jess Thrysoee (DG);
 */

package com.rcp.wbw.demo.editor;

import java.awt.BasicStroke;
import java.awt.Stroke;
import java.util.ResourceBundle;

import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.RGB;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.ColorDialog;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Spinner;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.Plot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.util.ResourceBundleWrapper;

import com.rcp.wbw.demo.swt.SWTPaintCanvas;
import com.rcp.wbw.demo.swt.SWTUtils;

/**
 * An editor for plot properties.
 */
class SWTPlotAppearanceEditor extends Composite {

    private Spinner selectStroke;

    /** The stroke (pen) used to draw the outline of the plot. */
    private SWTStrokeCanvas strokeCanvas;

    /** The paint (color) used to fill the background of the plot. */
    private SWTPaintCanvas backgroundPaintCanvas;

    /** The paint (color) used to draw the outline of the plot. */
    private SWTPaintCanvas outlinePaintCanvas;

    /** The orientation for the plot. */
    private PlotOrientation plotOrientation;

    private Combo orientation;

    /** Orientation constants. */
    private final static String[] orientationNames = { "Vertical", "Horizontal" };
    private final static int ORIENTATION_VERTICAL = 0;
    private final static int ORIENTATION_HORIZONTAL = 1;

    /** The resourceBundle for the localization. */
    protected static ResourceBundle localizationResources = ResourceBundleWrapper
            .getBundle("org.jfree.chart.editor.LocalizationBundle");

    SWTPlotAppearanceEditor(Composite parent, int style, Plot plot) {
        super(parent, style);
        FillLayout layout = new FillLayout();
        layout.marginHeight = layout.marginWidth = 4;
        setLayout(layout);

        Group general = new Group(this, SWT.NONE);
        GridLayout groupLayout = new GridLayout(3, false);
        groupLayout.marginHeight = groupLayout.marginWidth = 4;
        general.setLayout(groupLayout);
        general.setText(localizationResources.getString("General"));

        // row 1: stroke
        new Label(general, SWT.NONE).setText(localizationResources.getString("Outline_stroke"));
        this.strokeCanvas = new SWTStrokeCanvas(general, SWT.NONE);
        this.strokeCanvas.setStroke(plot.getOutlineStroke());
        GridData strokeGridData = new GridData(SWT.FILL, SWT.CENTER, true, false);
        strokeGridData.heightHint = 20;
        this.strokeCanvas.setLayoutData(strokeGridData);
        this.selectStroke = new Spinner(general, SWT.BORDER);
        this.selectStroke.setMinimum(1);
        this.selectStroke.setMaximum(3);
        this.selectStroke.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false));
        this.selectStroke.addSelectionListener(new SelectionAdapter() {
            public void widgetSelected(SelectionEvent event) {
                int w = SWTPlotAppearanceEditor.this.selectStroke.getSelection();
                if (w > 0) {
                    SWTPlotAppearanceEditor.this.strokeCanvas.setStroke(new BasicStroke(w));
                    SWTPlotAppearanceEditor.this.strokeCanvas.redraw();
                }
            }
        });
        // row 2: outline color
        new Label(general, SWT.NONE).setText(localizationResources.getString("Outline_Paint"));
        this.outlinePaintCanvas = new SWTPaintCanvas(general, SWT.NONE,
                SWTUtils.toSwtColor(getDisplay(), plot.getOutlinePaint()));
        GridData outlineGridData = new GridData(SWT.FILL, SWT.CENTER, true, false);
        outlineGridData.heightHint = 20;
        this.outlinePaintCanvas.setLayoutData(outlineGridData);
        Button selectOutlineColor = new Button(general, SWT.PUSH);
        selectOutlineColor.setText(localizationResources.getString("Select..."));
        selectOutlineColor.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, false, false));
        selectOutlineColor.addSelectionListener(new SelectionAdapter() {
            public void widgetSelected(SelectionEvent event) {
                ColorDialog dlg = new ColorDialog(getShell());
                dlg.setText(localizationResources.getString("Outline_Paint"));
                dlg.setRGB(SWTPlotAppearanceEditor.this.outlinePaintCanvas.getColor().getRGB());
                RGB rgb = dlg.open();
                if (rgb != null) {
                    SWTPlotAppearanceEditor.this.outlinePaintCanvas.setColor(new Color(getDisplay(), rgb));
                }
            }
        });
        // row 3: background paint
        new Label(general, SWT.NONE).setText(localizationResources.getString("Background_paint"));
        this.backgroundPaintCanvas = new SWTPaintCanvas(general, SWT.NONE,
                SWTUtils.toSwtColor(getDisplay(), plot.getBackgroundPaint()));
        GridData bgGridData = new GridData(SWT.FILL, SWT.CENTER, true, false);
        bgGridData.heightHint = 20;
        this.backgroundPaintCanvas.setLayoutData(bgGridData);
        Button selectBgPaint = new Button(general, SWT.PUSH);
        selectBgPaint.setText(localizationResources.getString("Select..."));
        selectBgPaint.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, false, false));
        selectBgPaint.addSelectionListener(new SelectionAdapter() {
            public void widgetSelected(SelectionEvent event) {
                ColorDialog dlg = new ColorDialog(getShell());
                dlg.setText(localizationResources.getString("Background_paint"));
                dlg.setRGB(SWTPlotAppearanceEditor.this.backgroundPaintCanvas.getColor().getRGB());
                RGB rgb = dlg.open();
                if (rgb != null) {
                    SWTPlotAppearanceEditor.this.backgroundPaintCanvas.setColor(new Color(getDisplay(), rgb));
                }
            }
        });
        // row 4: orientation
        if (plot instanceof CategoryPlot) {
            this.plotOrientation = ((CategoryPlot) plot).getOrientation();
        } else if (plot instanceof XYPlot) {
            this.plotOrientation = ((XYPlot) plot).getOrientation();
        }
        if (this.plotOrientation != null) {
            boolean isVertical = this.plotOrientation.equals(PlotOrientation.VERTICAL);
            int index = isVertical ? ORIENTATION_VERTICAL : ORIENTATION_HORIZONTAL;
            new Label(general, SWT.NONE).setText(localizationResources.getString("Orientation"));
            this.orientation = new Combo(general, SWT.DROP_DOWN);
            this.orientation.setItems(orientationNames);
            this.orientation.select(index);
            this.orientation.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, true, false, 2, 1));
            this.orientation.addSelectionListener(new SelectionAdapter() {
                public void widgetSelected(SelectionEvent event) {
                    switch (SWTPlotAppearanceEditor.this.orientation.getSelectionIndex()) {
                    case ORIENTATION_VERTICAL:
                        SWTPlotAppearanceEditor.this.plotOrientation = PlotOrientation.VERTICAL;
                        break;
                    case ORIENTATION_HORIZONTAL:
                        SWTPlotAppearanceEditor.this.plotOrientation = PlotOrientation.HORIZONTAL;
                        break;
                    default:
                        SWTPlotAppearanceEditor.this.plotOrientation = PlotOrientation.VERTICAL;
                    }
                }
            });
        }
    }

    /**
     * Returns the plot orientation.
     * 
     * @return The plot orientation.
     */
    public PlotOrientation getPlotOrientation() {
        return this.plotOrientation;
    }

    /**
     * Returns the background paint.
     * 
     * @return The background paint.
     */
    public Color getBackGroundPaint() {
        return this.backgroundPaintCanvas.getColor();
    }

    /**
     * Returns the outline paint.
     * 
     * @return The outline paint.
     */
    public Color getOutlinePaint() {
        return this.outlinePaintCanvas.getColor();
    }

    /**
     * Returns the stroke.
     * 
     * @return The stroke.
     */
    public Stroke getStroke() {
        return this.strokeCanvas.getStroke();
    }
}