001 // This file is part of AceWiki. 002 // Copyright 2008-2012, AceWiki developers. 003 // 004 // AceWiki is free software: you can redistribute it and/or modify it under the terms of the GNU 005 // Lesser General Public License as published by the Free Software Foundation, either version 3 of 006 // the License, or (at your option) any later version. 007 // 008 // AceWiki is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without 009 // even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 010 // Lesser General Public License for more details. 011 // 012 // You should have received a copy of the GNU Lesser General Public License along with AceWiki. If 013 // not, see http://www.gnu.org/licenses/. 014 015 package ch.uzh.ifi.attempto.preditor; 016 017 import nextapp.echo.app.Extent; 018 import nextapp.echo.app.Font; 019 import nextapp.echo.app.event.ActionListener; 020 import ch.uzh.ifi.attempto.echocomp.Style; 021 022 /** 023 * This abstract class represents a menu item that performs an action when the user clicks on it. 024 * 025 * @author Tobias Kuhn 026 */ 027 public class SpecialMenuItem extends MenuItem { 028 029 private static final long serialVersionUID = -2762672905600512854L; 030 031 /** 032 * Creates a new special menu item. 033 * 034 * @param text The text of the menu item. 035 * @param menuGroup The menu group to which this item should be assigned. 036 * @param actionCommand The action command. 037 * @param actionListener The action listener. 038 */ 039 public SpecialMenuItem(String text, String menuGroup, String actionCommand, ActionListener actionListener) { 040 super(menuGroup); 041 if (text == null) text = ""; 042 setText(text); 043 if (actionCommand == null) actionCommand = ""; 044 setActionCommand(actionCommand); 045 setForeground(Style.mediumForeground); 046 if (actionListener != null) { 047 addActionListener(actionListener); 048 } 049 updateStyle(); 050 } 051 052 /** 053 * Creates a new special menu item. 054 * 055 * @param text The text of the menu item. 056 * @param menuGroup The menu group to which this item should be assigned. 057 * @param actionCommand The action command. 058 */ 059 public SpecialMenuItem(String text, String menuGroup, String actionCommand) { 060 this(text, menuGroup, actionCommand, null); 061 } 062 063 /** 064 * Creates a new special menu item. 065 * 066 * @param text The text of the menu item. 067 * @param menuGroup The menu group to which this item should be assigned. 068 */ 069 public SpecialMenuItem(String text, String menuGroup) { 070 this(text, menuGroup, text, null); 071 } 072 073 /** 074 * Creates a new special menu item. 075 * 076 * @param text The text of the menu item. 077 */ 078 public SpecialMenuItem(String text) { 079 this(text, "", text, null); 080 } 081 082 protected void updateStyle() { 083 if (isHighlighted()) { 084 setFont(new Font(Style.fontTypeface, Font.BOLD, new Extent(12))); 085 } else { 086 setFont(new Font(Style.fontTypeface, Font.PLAIN, new Extent(12))); 087 } 088 } 089 090 protected String[] getContent() { 091 return new String[] {"special", getText(), getMenuGroup(), getActionCommand()}; 092 } 093 094 }