001: /**
002: * L2FProd.com Common Components 7.3 License.
003: *
004: * Copyright 2005-2007 L2FProd.com
005: *
006: * Licensed under the Apache License, Version 2.0 (the "License");
007: * you may not use this file except in compliance with the License.
008: * You may obtain a copy of the License at
009: *
010: * http://www.apache.org/licenses/LICENSE-2.0
011: *
012: * Unless required by applicable law or agreed to in writing, software
013: * distributed under the License is distributed on an "AS IS" BASIS,
014: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
015: * See the License for the specific language governing permissions and
016: * limitations under the License.
017: */package com.l2fprod.common.demo;
018:
019: import com.l2fprod.common.swing.JTaskPane;
020: import com.l2fprod.common.swing.JTaskPaneGroup;
021: import com.l2fprod.common.swing.LookAndFeelTweaks;
022: import com.l2fprod.common.swing.plaf.LookAndFeelAddons;
023: import com.l2fprod.common.swing.plaf.aqua.AquaLookAndFeelAddons;
024: import com.l2fprod.common.swing.plaf.metal.MetalLookAndFeelAddons;
025: import com.l2fprod.common.swing.plaf.windows.WindowsClassicLookAndFeelAddons;
026: import com.l2fprod.common.swing.plaf.windows.WindowsLookAndFeelAddons;
027: import com.l2fprod.common.util.ResourceManager;
028:
029: import java.awt.BorderLayout;
030: import java.awt.event.ActionEvent;
031:
032: import javax.swing.AbstractAction;
033: import javax.swing.Action;
034: import javax.swing.ImageIcon;
035: import javax.swing.JEditorPane;
036: import javax.swing.JFrame;
037: import javax.swing.JPanel;
038: import javax.swing.JScrollPane;
039: import javax.swing.JTabbedPane;
040: import javax.swing.UIManager;
041:
042: /**
043: * A simple demo showing the TaskPane and TaskGroup. <br>
044: *
045: */
046: public class TaskPaneMain extends JPanel {
047:
048: static ResourceManager RESOURCE = ResourceManager
049: .get(TaskPaneMain.class);
050:
051: public TaskPaneMain() throws Exception {
052: setLayout(new BorderLayout());
053:
054: JTabbedPane tabs = new JTabbedPane();
055:
056: { // the metal look and feel
057: UIManager.setLookAndFeel(UIManager
058: .getCrossPlatformLookAndFeelClassName());
059: LookAndFeelAddons.setAddon(MetalLookAndFeelAddons.class);
060: DemoPanel demo = new DemoPanel();
061: tabs.addTab("Metal L&F", demo);
062: }
063:
064: UIManager.setLookAndFeel(UIManager
065: .getSystemLookAndFeelClassName());
066:
067: { // the windows look and feel "Luna" style
068: UIManager.put("win.xpstyle.name", "luna");
069: LookAndFeelAddons.setAddon(WindowsLookAndFeelAddons.class);
070: DemoPanel demo = new DemoPanel();
071: tabs.addTab("Windows L&F (Luna)", demo);
072: }
073:
074: { // the windows look and feel "Homestead" style
075: UIManager.put("win.xpstyle.name", "homestead");
076: LookAndFeelAddons.setAddon(WindowsLookAndFeelAddons.class);
077: DemoPanel demo = new DemoPanel();
078: tabs.addTab("Windows L&F (Homestead)", demo);
079: }
080:
081: { // the windows look and feel "Metallic" style
082: UIManager.put("win.xpstyle.name", "metallic");
083: LookAndFeelAddons.setAddon(WindowsLookAndFeelAddons.class);
084: DemoPanel demo = new DemoPanel();
085: tabs.addTab("Windows L&F (Metallic)", demo);
086: }
087:
088: UIManager.put("win.xpstyle.name", null);
089:
090: { // the windows classic look and feel
091: LookAndFeelAddons
092: .setAddon(WindowsClassicLookAndFeelAddons.class);
093: DemoPanel demo = new DemoPanel();
094: tabs.addTab("Windows L&F (Classic)", demo);
095: }
096:
097: { // the glossy look
098: LookAndFeelAddons.setAddon(AquaLookAndFeelAddons.class);
099: DemoPanel demo = new DemoPanel();
100: tabs.addTab("Glossy", demo);
101: }
102:
103: { // the jgoodies look
104: try {
105: Class
106: .forName("com.jgoodies.looks.plastic.Plastic3DLookAndFeel");
107: UIManager
108: .setLookAndFeel("com.jgoodies.looks.plastic.Plastic3DLookAndFeel");
109: LookAndFeelAddons.setAddon(LookAndFeelAddons
110: .getBestMatchAddonClassName());
111: DemoPanel demo = new DemoPanel();
112: tabs.addTab("JGoodies Plastic3D", demo);
113: } catch (Exception e) {
114: }
115: }
116:
117: UIManager.setLookAndFeel(UIManager
118: .getSystemLookAndFeelClassName());
119:
120: add("Center", tabs);
121: }
122:
123: static class DemoPanel extends JTaskPane {
124:
125: public DemoPanel() {
126: JTaskPane taskPane = new JTaskPane();
127:
128: // "System" GROUP
129: JTaskPaneGroup systemGroup = new JTaskPaneGroup();
130: systemGroup.setTitle(RESOURCE
131: .getString("Main.tasks.systemGroup"));
132: systemGroup.setToolTipText(RESOURCE
133: .getString("Main.tasks.systemGroup.tooltip"));
134: systemGroup.setSpecial(true);
135: systemGroup.setIcon(new ImageIcon(TaskPaneMain.class
136: .getResource("icons/tasks-email.png")));
137:
138: systemGroup.add(makeAction(RESOURCE
139: .getString("Main.tasks.email"), "",
140: "icons/tasks-email.png"));
141: systemGroup.add(makeAction(RESOURCE
142: .getString("Main.tasks.delete"), "",
143: "icons/tasks-recycle.png"));
144:
145: taskPane.add(systemGroup);
146:
147: // "Office" GROUP
148: JTaskPaneGroup officeGroup = new JTaskPaneGroup();
149: officeGroup.setTitle(RESOURCE
150: .getString("Main.tasks.office"));
151: officeGroup.add(makeAction(RESOURCE
152: .getString("Main.tasks.word"), "",
153: "icons/tasks-writedoc.png"));
154: officeGroup.setExpanded(false);
155: officeGroup.setScrollOnExpand(true);
156:
157: taskPane.add(officeGroup);
158:
159: // "SEE ALSO" GROUP and ACTIONS
160: JTaskPaneGroup seeAlsoGroup = new JTaskPaneGroup();
161: // this group can not be collapsed
162: seeAlsoGroup.setCollapsable(false);
163: seeAlsoGroup.setTitle(RESOURCE
164: .getString("Main.tasks.seealso"));
165: seeAlsoGroup.add(makeAction("The Internet", RESOURCE
166: .getString("Main.tasks.internet.tooltip"),
167: "icons/tasks-internet.png"));
168:
169: seeAlsoGroup.add(makeAction(RESOURCE
170: .getString("Main.tasks.help"), RESOURCE
171: .getString("Main.tasks.help.tooltip"),
172: "icons/tasks-question.png"));
173:
174: taskPane.add(seeAlsoGroup);
175:
176: // "Details" GROUP
177: JTaskPaneGroup detailsGroup = new JTaskPaneGroup();
178: detailsGroup.setTitle(RESOURCE
179: .getString("Main.tasks.details"));
180: detailsGroup.setScrollOnExpand(true);
181:
182: JEditorPane detailsText = new JEditorPane("text/html",
183: "<html>");
184: LookAndFeelTweaks.makeMultilineLabel(detailsText);
185: LookAndFeelTweaks.htmlize(detailsText);
186: detailsText.setText(RESOURCE
187: .getString("Main.tasks.details.message"));
188: detailsGroup.add(detailsText);
189:
190: taskPane.add(detailsGroup);
191:
192: JScrollPane scroll = new JScrollPane(taskPane);
193: scroll.setBorder(null);
194:
195: setLayout(new BorderLayout());
196: add("Center", scroll);
197:
198: setBorder(null);
199: }
200:
201: Action makeAction(String title, String tooltiptext,
202: String iconPath) {
203: Action action = new AbstractAction(title) {
204: public void actionPerformed(ActionEvent e) {
205: }
206: };
207: action.putValue(Action.SMALL_ICON, new ImageIcon(
208: TaskPaneMain.class.getResource(iconPath)));
209: action.putValue(Action.SHORT_DESCRIPTION, tooltiptext);
210: return action;
211: }
212: }
213:
214: public static void main(String[] args) throws Exception {
215: UIManager.setLookAndFeel(UIManager
216: .getSystemLookAndFeelClassName());
217:
218: JFrame frame = new JFrame("JTaskPane / JTaskPaneGroup");
219: frame.getContentPane().setLayout(new BorderLayout());
220: frame.getContentPane().add("Center", new TaskPaneMain());
221: frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
222: frame.pack();
223: frame.setLocation(100, 100);
224: frame.setVisible(true);
225: }
226:
227: }
|