Java tutorial
/******************************************************************************* * 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.swt.examples.paint; import org.eclipse.jface.action.*; import org.eclipse.jface.resource.*; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.*; import org.eclipse.ui.*; import org.eclipse.ui.part.*; /** * The view for the paint application. * All rendering happens inside the area created by createPartControl(). * * @see ViewPart */ public class PaintView extends ViewPart { PaintExample instance = null; /** * Constructs a Paint view. */ public PaintView() { } /** * Creates the example. * * @see ViewPart#createPartControl */ @Override public void createPartControl(Composite parent) { instance = new PaintExample(parent); instance.createGUI(parent); /*** Add toolbar contributions ***/ final IActionBars actionBars = getViewSite().getActionBars(); IToolBarManager toolbarManager = actionBars.getToolBarManager(); Tool tools[] = PaintExample.tools; String group = tools[0].group; toolbarManager.add(new GroupMarker(group)); for (int i = 0; i < tools.length; i++) { Tool tool = tools[i]; if (!tool.group.equals(group)) { toolbarManager.add(new Separator()); toolbarManager.add(new GroupMarker(tool.group)); } group = tool.group; PaintAction action = new PaintAction(tool); toolbarManager.appendToGroup(group, action); if (i == PaintExample.Default_tool || i == PaintExample.Default_fill || i == PaintExample.Default_linestyle) { action.setChecked(true); } } actionBars.updateActionBars(); instance.setDefaults(); } /** * Called when the View is to be disposed */ @Override public void dispose() { instance.dispose(); instance = null; super.dispose(); } /** * Returns the Display. * * @return the display we're using */ public Display getDisplay() { return instance.getDisplay(); } /** * Called when we must grab focus. * * @see org.eclipse.ui.part.ViewPart#setFocus */ @Override public void setFocus() { instance.setFocus(); } /** * Action set glue. */ class PaintAction extends Action { private int style; private Runnable action; public PaintAction(Tool tool) { super(); String id = tool.group + '.' + tool.name; setId(id); style = tool.type == SWT.RADIO ? IAction.AS_RADIO_BUTTON : IAction.AS_PUSH_BUTTON; action = tool.action; setText(PaintExample.getResourceString(id + ".label")); setToolTipText(PaintExample.getResourceString(id + ".tooltip")); setDescription(PaintExample.getResourceString(id + ".description")); setImageDescriptor(ImageDescriptor.createFromFile(PaintExample.class, PaintExample.getResourceString(id + ".image"))); } @Override public int getStyle() { return style; } @Override public void run() { action.run(); } } }