001 /*
002 * Copyright (c) 2005 Peter Palotas, Fredrik Johansson, Einar Pehrson,
003 * Sebastian Kekkonen, Lars Magnus Lång, Malin Johansson and Sofia Nilsson
004 *
005 * This file is part of
006 * CleanSheets Extension for Assertions
007 *
008 * CleanSheets Extension for Assertions is free software; you can
009 * redistribute it and/or modify it under the terms of the GNU General Public
010 * License as published by the Free Software Foundation; either version 2 of
011 * the License, or (at your option) any later version.
012 *
013 * CleanSheets Extension for Assertions is distributed in the hope that
014 * it will be useful, but WITHOUT ANY WARRANTY; without even the implied
015 * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
016 * See the GNU General Public License for more details.
017 *
018 * You should have received a copy of the GNU General Public License
019 * along with CleanSheets Extension for Assertions; if not, write to the
020 * Free Software Foundation, Inc., 59 Temple Place, Suite 330,
021 * Boston, MA 02111-1307 USA
022 */
023 package csheets.ext.assertion.ui;
024
025 import javax.swing.Icon;
026 import javax.swing.ImageIcon;
027 import javax.swing.JComponent;
028 import javax.swing.JToolBar;
029
030 import csheets.ext.assertion.AssertionExtension;
031 import csheets.ui.ctrl.UIController;
032 import csheets.ui.ext.CellDecorator;
033 import csheets.ui.ext.UIExtension;
034
035 /**
036 * The user interface extension for assertions.
037 * @author Einar Pehrson
038 */
039 public class AssertionUIExtension extends UIExtension {
040
041 /** The icon to display with the extension's name */
042 private Icon icon;
043
044 /** A cell decorator that visualizes assertions on cells */
045 private CellDecorator cellDecorator;
046
047 /** A toolbar that visualizes assertions on cells */
048 private AssertionToolBar toolBar;
049
050 /** A side bar that provides editing of assertions */
051 private JComponent sideBar;
052
053 /**
054 * Creates a new user interface extension for assertions.
055 * @param extension the extension for which components are provided
056 * @param uiController the user interface controller
057 */
058 public AssertionUIExtension(AssertionExtension extension, UIController uiController) {
059 super(extension, uiController);
060 }
061
062 /**
063 * Returns an icon to display with the extension's name.
064 * @return an icon with an interval
065 */
066 public Icon getIcon() {
067 if (icon == null)
068 icon = new ImageIcon(
069 AssertionExtension.class.getResource("res/img/logo.gif"));
070 return icon;
071 }
072
073 /**
074 * Returns a cell decorator that visualizes assertions on cells.
075 * @return decorator for assertable cells
076 */
077 public CellDecorator getCellDecorator() {
078 if (cellDecorator == null)
079 cellDecorator = new AssertableCellDecorator();
080 return cellDecorator;
081 }
082
083 /**
084 * Returns a toolbar that visualizes assertions on cells.
085 * @return a JToolBar component
086 */
087 public JToolBar getToolBar() {
088 if (toolBar == null) {
089 toolBar = new AssertionToolBar();
090 uiController.addSelectionListener(toolBar);
091 }
092 return toolBar;
093 }
094
095 /**
096 * Returns a side bar that provides editing of assertions.
097 * @return a side bar
098 */
099 public JComponent getSideBar() {
100 if (sideBar == null)
101 sideBar = new AssertionPanel(uiController);
102 return sideBar;
103 }
104 }