From ff029b9ec46237c2b5f97be54efdb18668c0b945 Mon Sep 17 00:00:00 2001 From: metasim Date: Sun, 12 Nov 2000 19:58:53 +0000 Subject: [PATCH] Omitted part of the L&F checkin. git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@268175 13f79535-47bb-0310-9956-ffa450edef68 --- .../tools/ant/gui/ChangeLookAndFeel.java | 158 ++++++++++++++++++ .../ant/gui/command/ChangeLookAndFeelCmd.java | 87 ++++++++++ 2 files changed, 245 insertions(+) create mode 100644 src/antidote/org/apache/tools/ant/gui/ChangeLookAndFeel.java create mode 100644 src/antidote/org/apache/tools/ant/gui/command/ChangeLookAndFeelCmd.java diff --git a/src/antidote/org/apache/tools/ant/gui/ChangeLookAndFeel.java b/src/antidote/org/apache/tools/ant/gui/ChangeLookAndFeel.java new file mode 100644 index 000000000..72030ac3c --- /dev/null +++ b/src/antidote/org/apache/tools/ant/gui/ChangeLookAndFeel.java @@ -0,0 +1,158 @@ +/* + * The Apache Software License, Version 1.1 + * + * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, if + * any, must include the following acknowlegement: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowlegement may appear in the software itself, + * if and wherever such third-party acknowlegements normally appear. + * + * 4. The names "The Jakarta Project", "Tomcat", and "Apache Software + * Foundation" must not be used to endorse or promote products derived + * from this software without prior written permission. For written + * permission, please contact apache@apache.org. + * + * 5. Products derived from this software may not be called "Apache" + * nor may "Apache" appear in their names without prior written + * permission of the Apache Group. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * . + */ +package org.apache.tools.ant.gui; + +import org.apache.tools.ant.gui.event.ErrorEvent; +import org.apache.tools.ant.gui.util.WindowUtils; + +import javax.swing.*; +import java.io.IOException; +import java.util.*; +import java.awt.*; +import java.awt.event.ActionListener; +import java.awt.event.ActionEvent; + +/** + * Dialog for changing the current Look and Feel + * + * @version $Revision$ + * @author Erik Meade + */ +public class ChangeLookAndFeel extends JDialog { + + private AppContext _context; + + private JList lookAndFeels; + /** + * Standard ctor. + * + * @param context Application context. + */ + public ChangeLookAndFeel(AppContext context) { + super(context.getParentFrame(), true); + _context = context; + setDefaultCloseOperation(DISPOSE_ON_CLOSE); + + setTitle(context.getResources().getString( + getClass(), "title")); + + // Add the OK button. + JButton ok = new JButton( + context.getResources().getString(getClass(), "ok")); + ok.addActionListener(new ActionHandler()); + JPanel p = new JPanel(); + p.add(ok); + Container contentPane = getContentPane(); + getRootPane().setDefaultButton(ok); + p.setPreferredSize(new Dimension(150, p.getPreferredSize().height)); + contentPane.add(BorderLayout.SOUTH, p); + + // Add the list of look and feels + p = new JPanel(new BorderLayout()); + p.setBorder(BorderFactory.createTitledBorder( + context.getResources().getString(getClass(), "border"))); + + UIManager.LookAndFeelInfo[] lookAndFeelInfos = + UIManager.getInstalledLookAndFeels(); + String[] lookAndFeelNames = new String[lookAndFeelInfos.length]; + for (int i = 0; i < lookAndFeelInfos.length; i++) { + lookAndFeelNames[i] = lookAndFeelInfos[i].getName(); + } + + lookAndFeels = new JList(lookAndFeelNames); + lookAndFeels.setSelectedValue( + UIManager.getLookAndFeel().getName(), true); + p.add(lookAndFeels); + contentPane.add(BorderLayout.CENTER, p); + + // Just go ahead and show it... + pack(); + WindowUtils.centerWindow(context.getParentFrame(), this); + setVisible(true); + } + + /** Handles press of the OK button. */ + private class ActionHandler implements ActionListener { + public void actionPerformed(ActionEvent e) { + try { + UIManager.setLookAndFeel(getLookAndFeelClass( + (String)lookAndFeels.getSelectedValue())); + SwingUtilities.updateComponentTreeUI( + _context.getParentFrame()); + } catch (Exception ex) { + _context.getEventBus().postEvent( + new ErrorEvent( + _context, _context.getResources().getString( + ChangeLookAndFeel.class, "error") + ex)); + } + WindowUtils.sendCloseEvent(ChangeLookAndFeel.this); + } + } + + /** + * Get the Look and Feel class for the given name. + * + * @param lookAndFeelName Name of the look and feel. + * @return Class name to load. + */ + private String getLookAndFeelClass(String lookAndFeelName) { + UIManager.LookAndFeelInfo[] lookAndFeelInfos = + UIManager.getInstalledLookAndFeels(); + for (int i = 0; i < lookAndFeelInfos.length; i++) { + if (lookAndFeelInfos[i].getName().equals(lookAndFeelName)) + return lookAndFeelInfos[i].getClassName(); + } + return null; + } +} diff --git a/src/antidote/org/apache/tools/ant/gui/command/ChangeLookAndFeelCmd.java b/src/antidote/org/apache/tools/ant/gui/command/ChangeLookAndFeelCmd.java new file mode 100644 index 000000000..3db684b87 --- /dev/null +++ b/src/antidote/org/apache/tools/ant/gui/command/ChangeLookAndFeelCmd.java @@ -0,0 +1,87 @@ +/* + * The Apache Software License, Version 1.1 + * + * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, if + * any, must include the following acknowlegement: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowlegement may appear in the software itself, + * if and wherever such third-party acknowlegements normally appear. + * + * 4. The names "The Jakarta Project", "Tomcat", and "Apache Software + * Foundation" must not be used to endorse or promote products derived + * from this software without prior written permission. For written + * permission, please contact apache@apache.org. + * + * 5. Products derived from this software may not be called "Apache" + * nor may "Apache" appear in their names without prior written + * permission of the Apache Group. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * . + */ +package org.apache.tools.ant.gui.command; +import org.apache.tools.ant.gui.AppContext; +import org.apache.tools.ant.gui.ChangeLookAndFeel; + +/** + * ChangeLookAndFeel command. + * + * @version $Revision$ + * @author Erik Meade + */ +public class ChangeLookAndFeelCmd implements Command { + /** Name of the action the command maps to. */ + public static final String ACTION_NAME = "changeLookAndFeel"; + + /** The application context */ + private AppContext _context = null; + + /** + * Standard ctor. + * + * @param context Application context. + */ + public ChangeLookAndFeelCmd(AppContext context) { + _context = context; + } + + /** + * Successfully do nothing. + * + */ + public void execute() { + new ChangeLookAndFeel(_context); + } +}