Thread: [Japi-cvs] SF.net SVN: japi: [188] libs/swing-prefs/trunk
Status: Beta
Brought to you by:
christianhujer
From: <chr...@us...> - 2006-10-14 12:50:33
|
Revision: 188 http://svn.sourceforge.net/japi/?rev=188&view=rev Author: christianhujer Date: 2006-10-14 05:50:10 -0700 (Sat, 14 Oct 2006) Log Message: ----------- Copied preferences classes from historic to swing-prefs subproject. Added Paths: ----------- libs/swing-prefs/trunk/src/ libs/swing-prefs/trunk/src/net/ libs/swing-prefs/trunk/src/net/sf/ libs/swing-prefs/trunk/src/net/sf/japi/ libs/swing-prefs/trunk/src/net/sf/japi/swing/ libs/swing-prefs/trunk/src/net/sf/japi/swing/prefs/ libs/swing-prefs/trunk/src/net/sf/japi/swing/prefs/AbstractPrefs.java libs/swing-prefs/trunk/src/net/sf/japi/swing/prefs/PreferencesGroup.java libs/swing-prefs/trunk/src/net/sf/japi/swing/prefs/PreferencesPane.java libs/swing-prefs/trunk/src/net/sf/japi/swing/prefs/Prefs.java libs/swing-prefs/trunk/src/net/sf/japi/swing/prefs/action.properties libs/swing-prefs/trunk/src/net/sf/japi/swing/prefs/action_de.properties libs/swing-prefs/trunk/src/net/sf/japi/swing/prefs/package.html Copied: libs/swing-prefs/trunk/src/net/sf/japi/swing/prefs/AbstractPrefs.java (from rev 181, historic/trunk/src/app/net/sf/japi/swing/prefs/AbstractPrefs.java) =================================================================== --- libs/swing-prefs/trunk/src/net/sf/japi/swing/prefs/AbstractPrefs.java (rev 0) +++ libs/swing-prefs/trunk/src/net/sf/japi/swing/prefs/AbstractPrefs.java 2006-10-14 12:50:10 UTC (rev 188) @@ -0,0 +1,145 @@ +/* JAPI - (Yet another (hopefully) useful) Java API + * + * Copyright (C) 2004-2006 Christian Hujer + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + */ + +package net.sf.japi.swing.prefs; + +import java.net.URL; +import java.awt.LayoutManager; +import javax.swing.Icon; +import javax.swing.JComponent; +import javax.swing.JPanel; +import javax.swing.BoxLayout; +import net.sf.japi.swing.ColumnLayout; + +/** Abstract preferences implementation. + * Subclass this. + * Build the panel in your constructor. + * The default layout of an AbstractPrefs is {@link BoxLayout} with {@link BoxLayout#Y_AXIS}. + * @author <a href="mailto:ch...@ri...">Christian Hujer</a> + */ +public abstract class AbstractPrefs extends JPanel implements Prefs { + + /** The icon to be displayed in the list where the user can choose amongst preferences. + * @see #getListLabelIcon() + * @serial include + */ + private Icon listLabelIcon; + + /** The label text to be displayed in the list where the user can choose amongst preferences. + * @see #getListLabelText() + * @serial include + */ + private String listLabelText; + + /** The title text to be displayed as title for this prefs module. + * @see #getLabelText() + * @serial include + */ + private String labelText; + + /** The Help URL. + * @serial include + */ + private URL helpURL; + + /** The Help text (HTML). + * @serial include + */ + private String helpText; + + /** Constructor. */ + protected AbstractPrefs() { + super(new ColumnLayout()); + // setLayout(new BoxLayout(this, BoxLayout.Y_AXIS)); + } + + /** Constructor that allows setting the initial layout. + * @param layout Layout + */ + protected AbstractPrefs(final LayoutManager layout) { + super(layout); + } + + /** {@inheritDoc} */ + public final JComponent getEditComponent() { + return this; + } + + /** {@inheritDoc} */ + public final Icon getListLabelIcon() { + return listLabelIcon; + } + + /** Set the icon that is to be displayed in the list where the user can choose amongst preferences. + * @param listLabelIcon icon + */ + protected final void setListLabelIcon(final Icon listLabelIcon) { + this.listLabelIcon = listLabelIcon; + } + + /** {@inheritDoc} */ + public final String getListLabelText() { + return listLabelText; + } + + /** Set the label text that is to be displayed in the list where the user can choose amongst preferences. + * @param listLabelText text + */ + protected final void setListLabelText(final String listLabelText) { + this.listLabelText = listLabelText; + } + + /** {@inheritDoc} */ + public final String getLabelText() { + return labelText; + } + + /** Set the title text that is to be displayed as title for this prefs module. + * @param labelText text + */ + protected final void setLabelText(final String labelText) { + this.labelText = labelText; + } + + /** {@inheritDoc} */ + public final URL getHelpURL() { + return helpURL; + } + + /** Set the help URL. + * @param helpURL Help URL + */ + protected final void setHelpURL(final URL helpURL) { + this.helpURL = helpURL; + } + + /** {@inheritDoc} */ + public final String getHelpText() { + return helpText; + } + + /** Set the help text. + * @param helpText Help text + */ + protected final void setHelpText(final String helpText) { + this.helpText = helpText; + } + +} // class AbstractPrefs Copied: libs/swing-prefs/trunk/src/net/sf/japi/swing/prefs/PreferencesGroup.java (from rev 181, historic/trunk/src/app/net/sf/japi/swing/prefs/PreferencesGroup.java) =================================================================== --- libs/swing-prefs/trunk/src/net/sf/japi/swing/prefs/PreferencesGroup.java (rev 0) +++ libs/swing-prefs/trunk/src/net/sf/japi/swing/prefs/PreferencesGroup.java 2006-10-14 12:50:10 UTC (rev 188) @@ -0,0 +1,74 @@ +/* JAPI - (Yet another (hopefully) useful) Java API + * + * Copyright (C) 2004-2006 Christian Hujer + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + */ + +package net.sf.japi.swing.prefs; + +import static java.util.Arrays.asList; +import java.util.Iterator; +import java.util.List; +import javax.swing.AbstractListModel; + +/** A PreferencesGroup is an ordered set of {@link Prefs}, for use with {@link PreferencesPane}. + * @author <a href="mailto:ch...@ri...">Christian Hujer</a> + */ +public class PreferencesGroup extends AbstractListModel implements Iterable<Prefs> { + + /** The preferences modules. + * @serial include + */ + private final List<Prefs> prefs; + + /** The preferences title. + * @serial include + */ + private final String title; + + /** Create a Preferences group. + * @param prefs Preferences modules to initially add + * @param title Title for Preferences + */ + public PreferencesGroup(final String title, final Prefs... prefs) { + this.title = title; + this.prefs = asList(prefs); + } + + /** Get the title. + * @return title + */ + public String getTitle() { + return title; + } + + /** {@inheritDoc} */ + public Iterator<Prefs> iterator() { + return prefs.iterator(); + } + + /** {@inheritDoc} */ + public int getSize() { + return prefs.size(); + } + + /** {@inheritDoc} */ + public Prefs getElementAt(final int index) { + return prefs.get(index); + } + +} // class PreferencesGroup Copied: libs/swing-prefs/trunk/src/net/sf/japi/swing/prefs/PreferencesPane.java (from rev 181, historic/trunk/src/app/net/sf/japi/swing/prefs/PreferencesPane.java) =================================================================== --- libs/swing-prefs/trunk/src/net/sf/japi/swing/prefs/PreferencesPane.java (rev 0) +++ libs/swing-prefs/trunk/src/net/sf/japi/swing/prefs/PreferencesPane.java 2006-10-14 12:50:10 UTC (rev 188) @@ -0,0 +1,290 @@ +/* JAPI - (Yet another (hopefully) useful) Java API + * + * Copyright (C) 2004-2006 Christian Hujer + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + */ + +package net.sf.japi.swing.prefs; + +import java.awt.BorderLayout; +import java.awt.CardLayout; +import java.awt.Component; +import java.util.HashMap; +import java.util.Map; +import javax.swing.Action; +import static javax.swing.BorderFactory.createEmptyBorder; +import javax.swing.Box; +import javax.swing.DefaultListCellRenderer; +import javax.swing.JButton; +import javax.swing.JComponent; +import javax.swing.JDialog; +import javax.swing.JList; +import javax.swing.JOptionPane; +import javax.swing.JPanel; +import javax.swing.JScrollPane; +import javax.swing.SwingConstants; +import javax.swing.border.Border; +import javax.swing.event.ListSelectionEvent; +import javax.swing.event.ListSelectionListener; +import net.sf.japi.swing.ActionFactory; + +/** Panel to display preferences. + * @serial exclude This class is not intended to be serialized. + * @author <a href="mailto:ch...@ri...">Christian Hujer</a> + */ +@SuppressWarnings({"FieldAccessedSynchronizedAndUnsynchronized"}) +public final class PreferencesPane extends JOptionPane implements ListSelectionListener { + + /** Action Factory. */ + private static final ActionFactory ACTION_FACTORY = ActionFactory.getFactory("net.sf.japi.swing.prefs"); + + /** A map for DIALOGS that are already displaying. + * This map is used to prevent the dialog for the same PreferencesGroup be shown twice within the same application. + */ + private static final Map<PreferencesGroup,JDialog> DIALOGS = new HashMap<PreferencesGroup,JDialog>(); + + /** The group of preferences to display. */ + private final PreferencesGroup prefs; + + /** The currently selected preferences module. */ + private Prefs currentPref; + + /** Action for help. */ + private final Action helpAction = ACTION_FACTORY.createAction(false, "help" , this); + + /** Action for defaults. */ + private final Action defaultsAction = ACTION_FACTORY.createAction(false, "defaults", this); + + /** Action for ok. */ + private final Action okAction = ACTION_FACTORY.createAction(false, "ok" , this); + + /** Action for apply. */ + private final Action applyAction = ACTION_FACTORY.createAction(false, "apply" , this); + + /** Action for revert. */ + private final Action revertAction = ACTION_FACTORY.createAction(false, "revert" , this); + + /** Action for cancel. */ + private final Action cancelAction = ACTION_FACTORY.createAction(false, "cancel" , this); + + /** CardLayout for switching between prefs modules. + * @see #cardPanel + */ + private final CardLayout cards = new CardLayout(); + + /** Panel where the CardLayout for switching between prefs modules is used. + * @see #cards + */ + private final JPanel cardPanel = new JPanel(cards); + + /** Show Preferences. + * @param parentComponent determines the Frame in which the dialog is displayed; if <code>null</code>, or if the <code>parentComponent</code> has + * no <code>Frame</code>, a default <code>Frame</code> is used + * @param prefs PreferencesGroup to be displayed + * @param modal <code>true</code> if the displayed dialog should be modal, otherwise <code>false</code> + */ + public static void showPreferencesDialog(final Component parentComponent, final PreferencesGroup prefs, final boolean modal) { + synchronized (DIALOGS) { + if (DIALOGS.containsKey(prefs)) { + DIALOGS.get(prefs).toFront(); + } else { + final PreferencesPane pane = new PreferencesPane(prefs); + final JDialog dialog = pane.createDialog(parentComponent, prefs.getTitle()); + DIALOGS.put(prefs, dialog); + dialog.setResizable(true); + dialog.setModal(modal); + dialog.setVisible(true); + } + } + } + + /** Create a PreferencesPane. + * @param prefs PreferencesGroup to create panel for + */ + private PreferencesPane(final PreferencesGroup prefs) { + this.prefs = prefs; + setMessage(createMessage()); + setOptions(createOptions()); + } + + /** Create the Message. + * @return subpanel + */ + private JComponent createMessage() { + final JPanel panel = new JPanel(new BorderLayout()); + panel.add(createList(), BorderLayout.WEST); + panel.add(createPanel(), BorderLayout.CENTER); + return panel; + } + + /** Create the list. + * @return list + */ + private JComponent createList() { + final JList list = new JList(prefs); + list.setCellRenderer(new PrefsListCellRenderer()); + list.setSelectedIndex(0); + list.addListSelectionListener(this); + return new JScrollPane(list); + } + + /** Create the Panel. + * @return panel + */ + private JComponent createPanel() { + int index = 0; + for (final Prefs pref : prefs) { + cardPanel.add(Integer.toString(index++), pref.getEditComponent()); + } + currentPref = prefs.getElementAt(0); + return cardPanel; + } + + /** Create the Options. + * @return options + */ + private Object[] createOptions() { + return new Object[] { + new JButton(helpAction), + new JButton(defaultsAction), + Box.createHorizontalStrut(50), + new JButton(okAction), + new JButton(applyAction), + Box.createHorizontalStrut(50), + new JButton(revertAction), + new JButton(cancelAction), + }; + } + + /** {@inheritDoc} */ + public void valueChanged(final ListSelectionEvent e) { + if (e.getValueIsAdjusting()) { + return; + } + final int index = ((JList) e.getSource()).getSelectedIndex(); + final Prefs newPref = prefs.getElementAt(index); + //noinspection ObjectEquality + if (currentPref == newPref) { + return; + } + if (currentPref.isChanged()) { + final int result = ACTION_FACTORY.showConfirmDialog(this, YES_NO_CANCEL_OPTION, QUESTION_MESSAGE, "prefsChanged", currentPref.getListLabelText()); + switch (result) { + case CLOSED_OPTION: + case CANCEL_OPTION: + ((JList) e.getSource()).setSelectedValue(currentPref, true); + return; + case YES_OPTION: + currentPref.apply(); + break; + case NO_OPTION: + default: + } + } + currentPref = newPref; + cards.show(cardPanel, Integer.toString(index)); + } + + /** Action method for cancel. + * @used + */ + public void cancel() { + setValue(CANCEL_OPTION); + } + + /** {@inheritDoc} */ + @Override public void setValue(final Object newValue) { + super.setValue(newValue); + //noinspection ObjectEquality + if (newValue != null && newValue != UNINITIALIZED_VALUE) { + synchronized (DIALOGS) { + DIALOGS.remove(prefs).dispose(); + } + } + } + + /** Action method for defaults. + * @used + */ + public void defaults() { + currentPref.defaults(); + } + + /** Action method for help. + * @used + */ + public void help() { + // TODO + } + + /** Action method for ok. + * @used + */ + @SuppressWarnings({"InstanceMethodNamingConvention"}) + public void ok() { + apply(); + setValue(OK_OPTION); + } + + /** Action method for apply. + * @used + */ + public void apply() { + if (currentPref.isChanged()) { + currentPref.apply(); + } + } + + /** Action method for revert. + * @used + */ + public void revert() { + if (currentPref.isChanged()) { + currentPref.revert(); + } + } + + /** Class for rendering preferences list items. */ + private static final class PrefsListCellRenderer extends DefaultListCellRenderer { + + /** The border. + * For some reason it gets lost when set in the initializer, so we store it and set it each time the renderer is used. + */ + private Border border = createEmptyBorder(10, 10, 10, 10); + + /** Create a PrefsListCellRenderer. */ + PrefsListCellRenderer() { + setHorizontalTextPosition(SwingConstants.CENTER); + setVerticalTextPosition(SwingConstants.BOTTOM); + setHorizontalAlignment(SwingConstants.CENTER); + setVerticalAlignment(SwingConstants.CENTER); + } + + /** {@inheritDoc} */ + @SuppressWarnings({"ReturnOfThis"}) + @Override public Component getListCellRendererComponent(final JList list, final Object value, final int index, final boolean isSelected, final boolean cellHasFocus) { + super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); + setBorder(border); + final Prefs pref = (Prefs) value; + setText(pref.getListLabelText()); + setIcon(pref.getListLabelIcon()); + return this; + } + + } // class PrefsListCellRenderer + +} // class PreferencesPane Copied: libs/swing-prefs/trunk/src/net/sf/japi/swing/prefs/Prefs.java (from rev 181, historic/trunk/src/app/net/sf/japi/swing/prefs/Prefs.java) =================================================================== --- libs/swing-prefs/trunk/src/net/sf/japi/swing/prefs/Prefs.java (rev 0) +++ libs/swing-prefs/trunk/src/net/sf/japi/swing/prefs/Prefs.java 2006-10-14 12:50:10 UTC (rev 188) @@ -0,0 +1,85 @@ +/* JAPI - (Yet another (hopefully) useful) Java API + * + * Copyright (C) 2004-2006 Christian Hujer + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + */ + +package net.sf.japi.swing.prefs; + +import java.net.URL; +import javax.swing.Icon; +import javax.swing.JComponent; + +/** Interface that is to be implemented by classes that provide preferences. + * <p /> + * Often, implementations of this interface will subclass JComponent or JPanel. + * In that case {@link #getEditComponent()} will <code>return this</code>. + * {@link AbstractPrefs} provides a useful basic implementation of this interface. + * @author <a href="mailto:ch...@ri...">Christian Hujer</a> + */ +public interface Prefs { + + /** Apply the changes in the UI to get into effect / be stored. */ + void apply(); + + /** Revert the preferences to the default values. */ + void defaults(); + + /** Provide a component for editing the prefs. + * The edit component MUST NOT automatically change preferences itself. + * Preferences MUST only changed when the method {@link #apply()} is invoked. + * @return component for editing the prefs + */ + JComponent getEditComponent(); + + /** Provide help (HTML). + * This method will only be queried if {@link #getHelpURL()} returns <code>null</code>. + * This method may return <code>null</code> as well, which means that this prefs does not provide any help. + * @return help text (HTML) or <code>null</code> + */ + String getHelpText(); + + /** Provide help. + * This method may return <code>null</code> in which case the method {@link #getHelpText()} will be queried instead. + * @return help url or <code>null</code> + */ + URL getHelpURL(); + + /** Provide text to be displayed as title for this prefs module. + * @return title of this prefs module + */ + String getLabelText(); + + /** Provide an icon to be displayed in the list where the user can choose amongst preferences. + * @return icon to be displayed in the list or <code>null</code> if no icon is available + */ + Icon getListLabelIcon(); + + /** Provide a label to be displayed in the list where the user can choose amongst preferences. + * @return text to be displayed in the list + */ + String getListLabelText(); + + /** Check whether there are unsaved changes. + * @return <code>true</code> if there are unsaved changes, otherwise <code>false</code> + */ + boolean isChanged(); + + /** Revert the preferences to the previously stored settings. */ + void revert(); + +} // class Prefs Copied: libs/swing-prefs/trunk/src/net/sf/japi/swing/prefs/action.properties (from rev 181, historic/trunk/src/app/net/sf/japi/swing/prefs/action.properties) =================================================================== --- libs/swing-prefs/trunk/src/net/sf/japi/swing/prefs/action.properties (rev 0) +++ libs/swing-prefs/trunk/src/net/sf/japi/swing/prefs/action.properties 2006-10-14 12:50:10 UTC (rev 188) @@ -0,0 +1,29 @@ +# JAPI - (Yet another (hopefully) useful) Java API +# +# Copyright (C) 2004-2006 Christian Hujer +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 2 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. +# + + +help.text=Help +defaults.text=Defaults +ok.text=Ok +apply.text=Apply +revert.text=Revert +cancel.text=Cancel +prefsChanged.title=Prefs changed +prefsChanged.message=You have made changes to\nyour preferences for {0}.\n\nApply (keep) your changes? Copied: libs/swing-prefs/trunk/src/net/sf/japi/swing/prefs/action_de.properties (from rev 181, historic/trunk/src/app/net/sf/japi/swing/prefs/action_de.properties) =================================================================== --- libs/swing-prefs/trunk/src/net/sf/japi/swing/prefs/action_de.properties (rev 0) +++ libs/swing-prefs/trunk/src/net/sf/japi/swing/prefs/action_de.properties 2006-10-14 12:50:10 UTC (rev 188) @@ -0,0 +1,29 @@ +# JAPI - (Yet another (hopefully) useful) Java API +# +# Copyright (C) 2004-2006 Christian Hujer +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 2 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. +# + + +help.text=Hilfe +defaults.text=Voreinstellungen +ok.text=Ok +apply.text=Anwenden +revert.text=Zur\xFCcksetzen +cancel.text=Abbrechen +prefsChanged.title=Voreinstellungen ge\xE4ndert +prefsChanged.message=Sie haben Ihre Einstellungen\nzu {0} ge\xE4ndert.\n\n\xC4nderungen anwenden (behalten)? Copied: libs/swing-prefs/trunk/src/net/sf/japi/swing/prefs/package.html (from rev 181, historic/trunk/src/app/net/sf/japi/swing/prefs/package.html) =================================================================== --- libs/swing-prefs/trunk/src/net/sf/japi/swing/prefs/package.html (rev 0) +++ libs/swing-prefs/trunk/src/net/sf/japi/swing/prefs/package.html 2006-10-14 12:50:10 UTC (rev 188) @@ -0,0 +1,59 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- JAPI - (Yet another (hopefully) useful) Java API + - + - Copyright (C) 2004-2006 Christian Hujer + - + - This program is free software; you can redistribute it and/or + - modify it under the terms of the GNU General Public License as + - published by the Free Software Foundation; either version 2 of the + - License, or (at your option) any later version. + - + - This program is distributed in the hope that it will be useful, but + - WITHOUT ANY WARRANTY; without even the implied warranty of + - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + - General Public License for more details. + - + - You should have received a copy of the GNU General Public License + - along with this program; if not, write to the Free Software + - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + - 02111-1307, USA. + --> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de"> + <head> + <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" /> + <meta name="Date" content="$Date: 2006-04-03 23:00:14 +0200 (Mon, 03 Apr 2006) $" /> + <title>net.sf.japi.swing.prefs</title> + </head> + <body> + <p> + This package contains useful Swing extension classes about handling user interfaces to user preferences. + </p> + <p> + The recommended way in using this package is: + </p> + <ol> + <li> + Create instances of {@link net.sf.japi.swing.prefs.Prefs} + <p /> + For this, you can do either or both: + <ul> + <li>subclass {@link net.sf.japi.swing.prefs.AbstractPrefs}</li> + <li>implement {@link net.sf.japi.swing.prefs.Prefs}</li> + </ul> + The most important methods of {@link net.sf.japi.swing.prefs.Prefs} are {@link net.sf.japi.swing.prefs.Prefs#isChanged()}, + {@link net.sf.japi.swing.prefs.Prefs#defaults()}, {@link net.sf.japi.swing.prefs.Prefs#revert()} and + {@link net.sf.japi.swing.prefs.Prefs#apply()}. + You implement these methods to get notified about the user's wishes about his / her input. + </li> + <li> + Create a {@link net.sf.japi.swing.prefs.PreferencesGroup} that contains these Prefs objects. + </li> + <li> + Invoke + {@link net.sf.japi.swing.prefs.PreferencesPane#showPreferencesDialog(java.awt.Component,net.sf.japi.swing.prefs.PreferencesGroup,boolean)} + to let the user change the preferences. + </li> + </ol> + </body> +</html> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <chr...@us...> - 2007-01-07 18:30:26
|
Revision: 281 http://svn.sourceforge.net/japi/?rev=281&view=rev Author: christianhujer Date: 2007-01-07 10:30:22 -0800 (Sun, 07 Jan 2007) Log Message: ----------- Made swing-prefs compilable. Added Paths: ----------- libs/swing-prefs/trunk/build.xml libs/swing-prefs/trunk/lib/ libs/swing-prefs/trunk/lib/LICENSE-Pack200Task.jar libs/swing-prefs/trunk/lib/LICENSE-annotations.jar libs/swing-prefs/trunk/lib/Pack200Task.jar libs/swing-prefs/trunk/lib/annotations.jar libs/swing-prefs/trunk/lib/japi-lib-lang-0.1.jar libs/swing-prefs/trunk/lib/japi-lib-swing-action-0.1.jar libs/swing-prefs/trunk/lib/japi-lib-swing-extlib-0.1.jar Property Changed: ---------------- libs/swing-prefs/trunk/ Property changes on: libs/swing-prefs/trunk ___________________________________________________________________ Name: svn:ignore + dest dist classes Added: libs/swing-prefs/trunk/build.xml =================================================================== --- libs/swing-prefs/trunk/build.xml (rev 0) +++ libs/swing-prefs/trunk/build.xml 2007-01-07 18:30:22 UTC (rev 281) @@ -0,0 +1,178 @@ +<?xml version="1.0" encoding="utf-8"?> +<project name="japi lib swing-prefs" default="compile"> + + <property name="module.version" value="0.1" /> + <property name="module.name" value="japi-lib-swing-prefs" /> + <property name="module.shortname" value="swing-prefs" /> + <property name="module.title" value="Swing Preferences" /> + + <taskdef name="pack200" classpath="lib/Pack200Task.jar" classname="com.sun.tools.apache.ant.pack200.Pack200Task" /> + + <target + name = "clean" + description = "Cleans Sandbox" + > + <delete dir="classes" /> + <delete dir="docs" /> + </target> + + <target + name = "compile" + description = "Compiles production classes" + > + <mkdir dir="classes/production/${module.shortname}" /> + <mkdir dir="classes/test/${module.shortname}" /> + <javac + srcdir="src" + destdir="classes/production/${module.shortname}" + encoding="utf-8" + source="1.5" + target="1.5" + > + <classpath> + <fileset dir="lib" includes="*.jar" excludes="LICENSE-*.jar" /> + </classpath> + <exclude name="test/**/*.java" /> + </javac> + <copy + todir="classes/production/${module.shortname}" + > + <fileset dir="src" includes="**/*.properties" excludes="test/**/*.properties" /> + <fileset dir="src" includes="META-INF/services/**" /> + </copy> + </target> + + <target + name = "dist" + description = "Packs distribution archives." + depends = "clean, compile" + > + <!--depends = "clean, compile, doc" + --> + <delete dir="dist" /> + <mkdir dir="dist" /> + <property name="distName" value="dist/${module.name}-${module.version}" /> + <parallel> + <tar tarfile="${distName}.src.tar"> + <tarfileset dir="." prefix="${module.name}-${module.version}"> + <include name="src/**" /> + <include name="build.xml" /> + </tarfileset> + </tar> + <zip destfile="${distName}.src.zip"> + <zipfileset dir="." prefix="${module.name}-${module.version}"> + <include name="src/**" /> + <include name="build.xml" /> + </zipfileset> + </zip> + <jar destfile="${distName}.src.jar"> + <zipfileset dir="." prefix="${module.name}-${module.version}"> + <include name="src/**" /> + <include name="build.xml" /> + </zipfileset> + </jar> + <jar destfile="${distName}.jar"> + <zipfileset dir="classes/production/${module.shortname}"/> + <manifest> + <attribute name="Implementation-Title" value="${module.name}" /> + <attribute name="Implementation-Vendor" value="Christian Hujer + the JAPI Developers" /> + <attribute name="Implementation-Version" value="${module.version}" /> + <attribute name="Implementation-URL" value="http://sourceforge.net/projects/japi/" /> + </manifest> + </jar> + <tar tarfile="${distName}.doc.tar"> + <tarfileset dir="." prefix="${module.name}-${module.version}"> + <include name="docs/**" /> + <include name="build.xml" /> + </tarfileset> + </tar> + <zip destfile="${distName}.doc.zip"> + <zipfileset dir="." prefix="${module.name}-${module.version}"> + <include name="docs/**" /> + <include name="build.xml" /> + </zipfileset> + </zip> + <jar destfile="${distName}.doc.jar"> + <zipfileset dir="." prefix="${module.name}-${module.version}"> + <include name="docs/**" /> + </zipfileset> + </jar> + </parallel> + <parallel> + <gzip src="${distName}.src.tar" destfile="${distName}.src.tar.gz" /> + <bzip2 src="${distName}.src.tar" destfile="${distName}.src.tar.bz2" /> + <gzip src="${distName}.doc.tar" destfile="${distName}.doc.tar.gz" /> + <bzip2 src="${distName}.doc.tar" destfile="${distName}.doc.tar.bz2" /> + <pack200 + src="${distName}.jar" + destfile="${distName}.pack.gz" + gzipoutput="true" + stripdebug="true" + effort="9" + keepfileorder="false" + modificationtime="latest" + deflatehint="false" + /> + </parallel> + <delete file="${distName}.src.tar" /> + <delete file="${distName}.doc.tar" /> + </target> + + <target + name = "doc" + description = "Creates public javadoc documentation." + > + <mkdir dir="docs/api" /> + <!--copy todir="docs/api" file="src/doc/api/public/copyright.html" /> + <copy todir="docs/api" file="src/doc/api/public/.htaccess" /--> + <javadoc + destdir = "docs/api" + access = "protected" + author = "yes" + version = "yes" + locale = "en_US" + use = "yes" + splitindex = "yes" + windowtitle = "JAPI Library ${module.title} ${module.version} API documentation" + doctitle = "JAPI<br />Yet another Java API<br />Library ${module.title} ${module.version} API documentation" + header = "JAPI Library ${module.title} ${module.version}<br />API Documentation" + footer = "JAPI<br />Yet another Java API<br />Library ${module.title} ${module.version} API documentation" + bottom = "<div style=" text-align:center;">© 2005-2006 Christian Hujer. All rights reserved. See <a href="{@docRoot}/copyright.html">copyright</a></div>" + serialwarn = "yes" + charset = "utf-8" + docencoding = "utf-8" + encoding = "utf-8" + source = "1.5" + linksource = "yes" + link = "${user.javadoc.link}" + > + <!-- + overview = "src/overview.html" + --> + <classpath> + <fileset dir="lib" includes="annotations.jar" /> + </classpath> + <sourcepath> + <pathelement path="${user.javadoc.javasrc}" /> + <pathelement path="src" /> + </sourcepath> + <packageset + dir="src" + defaultexcludes="yes" + > + <include name="net/**" /> + </packageset> + <tag enabled="true" name="retval" description="Return Values:" scope="methods" /> + <tag enabled="true" name="pre" description="Preconditions:" scope="methods,constructors" /> + <tag enabled="true" name="post" description="Postconditions:" scope="methods" /> + <tag enabled="true" name="invariant" description="Invariant:" scope="methods,fields" /> + <tag enabled="true" name="note" description="Notes:" /> + <tag enabled="true" name="warning" description="Warnings:" /> + <!--tag enabled="true" name="todo" description="Todo:" /--> + <taglet name="com.sun.tools.doclets.ToDoTaglet" path="" /> + <tag enabled="true" name="fixme" description="Fixme:" /> + <tag enabled="true" name="xxx" description="XXX:" /> + </javadoc> + </target> + +</project> Property changes on: libs/swing-prefs/trunk/build.xml ___________________________________________________________________ Name: svn:mime-type + text/xml Name: svn:eol-style + LF Added: libs/swing-prefs/trunk/lib/LICENSE-Pack200Task.jar =================================================================== --- libs/swing-prefs/trunk/lib/LICENSE-Pack200Task.jar (rev 0) +++ libs/swing-prefs/trunk/lib/LICENSE-Pack200Task.jar 2007-01-07 18:30:22 UTC (rev 281) @@ -0,0 +1,471 @@ +SUN PUBLIC LICENSE Version 1.0 + +1. Definitions. + + 1.0.1. "Commercial Use" means distribution or otherwise making the + Covered Code available to a third party. + + 1.1. "Contributor" means each entity that creates or contributes to + the creation of Modifications. + + 1.2. "Contributor Version" means the combination of the Original Code, + prior Modifications used by a Contributor, and the Modifications made + by that particular Contributor. + + 1.3. "Covered Code" means the Original Code or Modifications or the + combination of the Original Code and Modifications, in each case + including portions thereof and corresponding documentation released + with the source code. + + 1.4. "Electronic Distribution Mechanism" means a mechanism generally + accepted in the software development community for the electronic + transfer of data. + + 1.5. "Executable" means Covered Code in any form other than Source + Code. + + 1.6. "Initial Developer" means the individual or entity identified as + the Initial Developer in the Source Code notice required by Exhibit A. + + 1.7. "Larger Work" means a work which combines Covered Code or + portions thereof with code not governed by the terms of this License. + + 1.8. "License" means this document. + + 1.8.1. "Licensable" means having the right to grant, to the maximum + extent possible, whether at the time of the initial grant or + subsequently acquired, any and all of the rights conveyed herein. + + 1.9. "Modifications" means any addition to or deletion from the + substance or structure of either the Original Code or any previous + Modifications. When Covered Code is released as a series of files, a + Modification is: + + A. Any addition to or deletion from the contents of a file containing + Original Code or previous Modifications. + + B. Any new file that contains any part of the Original Code or + previous Modifications. + + 1.10. "Original Code" means Source Code of computer software code + which is described in the Source Code notice required by Exhibit A as + Original Code, and which, at the time of its release under this + License is not already Covered Code governed by this License. + + 1.10.1. "Patent Claims" means any patent claim(s), now owned or + hereafter acquired, including without limitation, method, process, and + apparatus claims, in any patent Licensable by grantor. + + 1.11. "Source Code" means the preferred form of the Covered Code for + making modifications to it, including all modules it contains, plus + any associated documentation, interface definition files, scripts used + to control compilation and installation of an Executable, or source + code differential comparisons against either the Original Code or + another well known, available Covered Code of the Contributor's + choice. The Source Code can be in a compressed or archival form, + provided the appropriate decompression or de-archiving software is + widely available for no charge. + + 1.12. "You" (or "Your") means an individual or a legal entity + exercising rights under, and complying with all of the terms of, this + License or a future version of this License issued under Section 6.1. + For legal entities, "You" includes any entity which controls, is + controlled by, or is under common control with You. For purposes of + this definition, "control" means (a) the power, direct or indirect, to + cause the direction or management of such entity, whether by contract + or otherwise, or (b) ownership of more than fifty percent (50%) of the + outstanding shares or beneficial ownership of such entity. + +2. Source Code License. + +2.1 The Initial Developer Grant. + + The Initial Developer hereby grants You a world-wide, royalty-free, + non-exclusive license, subject to third party intellectual property + claims: + + (a) under intellectual property rights (other than patent or + trademark) Licensable by Initial Developer to use, reproduce, modify, + display, perform, sublicense and distribute the Original Code (or + portions thereof) with or without Modifications, and/or as part of a + Larger Work; and + + (b) under Patent Claims infringed by the making, using or selling of + Original Code, to make, have made, use, practice, sell, and offer for + sale, and/or otherwise dispose of the Original Code (or portions + thereof). + + (c) the licenses granted in this Section 2.1(a) and (b) are effective + on the date Initial Developer first distributes Original Code under + the terms of this License. + + (d) Notwithstanding Section 2.1(b) above, no patent license is + granted: 1) for code that You delete from the Original Code; 2) + separate from the Original Code; or 3) for infringements caused by: + i) the modification of the Original Code or ii) the combination of the + Original Code with other software or devices. + +2.2. Contributor Grant. + + Subject to third party intellectual property claims, each Contributor + hereby grants You a world-wide, royalty-free, non-exclusive license + + (a) under intellectual property rights (other than patent or + trademark) Licensable by Contributor, to use, reproduce, modify, + display, perform, sublicense and distribute the Modifications created + by such Contributor (or portions thereof) either on an unmodified + basis, with other Modifications, as Covered Code and/or as part of a + Larger Work; and + + (b) under Patent Claims infringed by the making, using, or selling of + Modifications made by that Contributor either alone and/or in + combination with its Contributor Version (or portions of such + combination), to make, use, sell, offer for sale, have made, and/or + otherwise dispose of: 1) Modifications made by that Contributor (or + portions thereof); and 2) the combination of Modifications made by + that Contributor with its Contributor Version (or portions of such + combination). + + (c) the licenses granted in Sections 2.2(a) and 2.2(b) are effective + on the date Contributor first makes Commercial Use of the Covered + Code. + + (d) notwithstanding Section 2.2(b) above, no patent license is + granted: 1) for any code that Contributor has deleted from the + Contributor Version; 2) separate from the Contributor Version; 3) for + infringements caused by: i) third party modifications of Contributor + Version or ii) the combination of Modifications made by that + Contributor with other software (except as part of the Contributor + Version) or other devices; or 4) under Patent Claims infringed by + Covered Code in the absence of Modifications made by that Contributor. + +3. Distribution Obligations. + +3.1. Application of License. + + The Modifications which You create or to which You contribute are + governed by the terms of this License, including without limitation + Section 2.2. The Source Code version of Covered Code may be + distributed only under the terms of this License or a future version + of this License released under Section 6.1, and You must include a + copy of this License with every copy of the Source Code You + distribute. You may not offer or impose any terms on any Source Code + version that alters or restricts the applicable version of this + License or the recipients' rights hereunder. However, You may include + an additional document offering the additional rights described in + Section 3.5. + +3.2. Availability of Source Code. + + Any Modification which You create or to which You contribute must be + made available in Source Code form under the terms of this License + either on the same media as an Executable version or via an accepted + Electronic Distribution Mechanism to anyone to whom you made an + Executable version available; and if made available via Electronic + Distribution Mechanism, must remain available for at least twelve (12) + months after the date it initially became available, or at least six + (6) months after a subsequent version of that particular Modification + has been made available to such recipients. You are responsible for + ensuring that the Source Code version remains available even if the + Electronic Distribution Mechanism is maintained by a third party. + +3.3. Description of Modifications. + + You must cause all Covered Code to which You contribute to contain a + file documenting the changes You made to create that Covered Code and + the date of any change. You must include a prominent statement that + the Modification is derived, directly or indirectly, from Original + Code provided by the Initial Developer and including the name of the + Initial Developer in (a) the Source Code, and (b) in any notice in an + Executable version or related documentation in which You describe the + origin or ownership of the Covered Code. + +3.4. Intellectual Property Matters. + + (a) Third Party Claims. + + If Contributor has knowledge that a license under a third party's + intellectual property rights is required to exercise the rights + granted by such Contributor under Sections 2.1 or 2.2, Contributor + must include a text file with the Source Code distribution titled + "LEGAL'' which describes the claim and the party making the claim in + sufficient detail that a recipient will know whom to contact. If + Contributor obtains such knowledge after the Modification is made + available as described in Section 3.2, Contributor shall promptly + modify the LEGAL file in all copies Contributor makes available + thereafter and shall take other steps (such as notifying appropriate + mailing lists or newsgroups) reasonably calculated to inform those who + received the Covered Code that new knowledge has been obtained. + + (b) Contributor APIs. + + If Contributor's Modifications include an application programming + interface ("API") and Contributor has knowledge of patent licenses + which are reasonably necessary to implement that API, Contributor must + also include this information in the LEGAL file. + + (c) Representations. + + Contributor represents that, except as disclosed pursuant to Section + 3.4(a) above, Contributor believes that Contributor's Modifications + are Contributor's original creation(s) and/or Contributor has + sufficient rights to grant the rights conveyed by this License. + +3.5. Required Notices. + + You must duplicate the notice in Exhibit A in each file of the Source + Code. If it is not possible to put such notice in a particular Source + Code file due to its structure, then You must include such notice in a + location (such as a relevant directory) where a user would be likely + to look for such a notice. If You created one or more Modification(s) + You may add your name as a Contributor to the notice described in + Exhibit A. You must also duplicate this License in any documentation + for the Source Code where You describe recipients' rights or ownership + rights relating to Covered Code. You may choose to offer, and to + charge a fee for, warranty, support, indemnity or liability + obligations to one or more recipients of Covered Code. However, You + may do so only on Your own behalf, and not on behalf of the Initial + Developer or any Contributor. You must make it absolutely clear than + any such warranty, support, indemnity or liability obligation is + offered by You alone, and You hereby agree to indemnify the Initial + Developer and every Contributor for any liability incurred by the + Initial Developer or such Contributor as a result of warranty, + support, indemnity or liability terms You offer. + +3.6. Distribution of Executable Versions. + + You may distribute Covered Code in Executable form only if the + requirements of Section 3.1-3.5 have been met for that Covered Code, + and if You include a notice stating that the Source Code version of + the Covered Code is available under the terms of this License, + including a description of how and where You have fulfilled the + obligations of Section 3.2. The notice must be conspicuously included + in any notice in an Executable version, related documentation or + collateral in which You describe recipients' rights relating to the + Covered Code. You may distribute the Executable version of Covered + Code or ownership rights under a license of Your choice, which may + contain terms different from this License, provided that You are in + compliance with the terms of this License and that the license for the + Executable version does not attempt to limit or alter the recipient's + rights in the Source Code version from the rights set forth in this + License. If You distribute the Executable version under a different + license You must make it absolutely clear that any terms which differ + from this License are offered by You alone, not by the Initial + Developer or any Contributor. You hereby agree to indemnify the + Initial Developer and every Contributor for any liability incurred by + the Initial Developer or such Contributor as a result of any such + terms You offer. + +3.7. Larger Works. + + You may create a Larger Work by combining Covered Code with other code + not governed by the terms of this License and distribute the Larger + Work as a single product. In such a case, You must make sure the + requirements of this License are fulfilled for the Covered Code. + +4. Inability to Comply Due to Statute or Regulation. + + If it is impossible for You to comply with any of the terms of this + License with respect to some or all of the Covered Code due to + statute, judicial order, or regulation then You must: (a) comply with + the terms of this License to the maximum extent possible; and (b) + describe the limitations and the code they affect. Such description + must be included in the LEGAL file described in Section 3.4 and must + be included with all distributions of the Source Code. Except to the + extent prohibited by statute or regulation, such description must be + sufficiently detailed for a recipient of ordinary skill to be able to + understand it. + +5. Application of this License. + + This License applies to code to which the Initial Developer has + attached the notice in Exhibit A and to related Covered Code. + +6. Versions of the License. + +6.1. New Versions. + + Sun Microsystems, Inc. ("Sun") may publish revised and/or new versions + of the License from time to time. Each version will be given a + distinguishing version number. + +6.2. Effect of New Versions. + + Once Covered Code has been published under a particular version of the + License, You may always continue to use it under the terms of that + version. You may also choose to use such Covered Code under the terms + of any subsequent version of the License published by Sun. No one + other than Sun has the right to modify the terms applicable to Covered + Code created under this License. + +6.3. Derivative Works. + + If You create or use a modified version of this License (which you may + only do in order to apply it to code which is not already Covered Code + governed by this License), You must: (a) rename Your license so that + the phrases "Sun," "Sun Public License," or "SPL" or any confusingly + similar phrase do not appear in your license (except to note that your + license differs from this License) and (b) otherwise make it clear + that Your version of the license contains terms which differ from the + Sun Public License. (Filling in the name of the Initial Developer, + Original Code or Contributor in the notice described in Exhibit A + shall not of themselves be deemed to be modifications of this + License.) + +7. DISCLAIMER OF WARRANTY. + + COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS'' BASIS, + WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, + WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF + DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. + THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE + IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT, + YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE + COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER + OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF + ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER. + +8. TERMINATION. + + 8.1. This License and the rights granted hereunder will terminate + automatically if You fail to comply with terms herein and fail to cure + such breach within 30 days of becoming aware of the breach. All + sublicenses to the Covered Code which are properly granted shall + survive any termination of this License. Provisions which, by their + nature, must remain in effect beyond the termination of this License + shall survive. + + 8.2. If You initiate litigation by asserting a patent infringement + claim (excluding declaratory judgment actions) against Initial Developer + or a Contributor (the Initial Developer or Contributor against whom + You file such action is referred to as "Participant") alleging that: + + (a) such Participant's Contributor Version directly or indirectly + infringes any patent, then any and all rights granted by such + Participant to You under Sections 2.1 and/or 2.2 of this License + shall, upon 60 days notice from Participant terminate prospectively, + unless if within 60 days after receipt of notice You either: (i) + agree in writing to pay Participant a mutually agreeable reasonable + royalty for Your past and future use of Modifications made by such + Participant, or (ii) withdraw Your litigation claim with respect to + the Contributor Version against such Participant. If within 60 days + of notice, a reasonable royalty and payment arrangement are not + mutually agreed upon in writing by the parties or the litigation claim + is not withdrawn, the rights granted by Participant to You under + Sections 2.1 and/or 2.2 automatically terminate at the expiration of + the 60 day notice period specified above. + + (b) any software, hardware, or device, other than such Participant's + Contributor Version, directly or indirectly infringes any patent, then + any rights granted to You by such Participant under Sections 2.1(b) + and 2.2(b) are revoked effective as of the date You first made, used, + sold, distributed, or had made, Modifications made by that + Participant. + + 8.3. If You assert a patent infringement claim against Participant + alleging that such Participant's Contributor Version directly or + indirectly infringes any patent where such claim is resolved (such as + by license or settlement) prior to the initiation of patent + infringement litigation, then the reasonable value of the licenses + granted by such Participant under Sections 2.1 or 2.2 shall be taken + into account in determining the amount or value of any payment or + license. + + 8.4. In the event of termination under Sections 8.1 or 8.2 above, all + end user license agreements (excluding distributors and resellers) + which have been validly granted by You or any distributor hereunder + prior to termination shall survive termination. + +9. LIMITATION OF LIABILITY. + + UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT + (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL + DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE, + OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR + ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY + CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, + WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER + COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN + INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF + LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY + RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW + PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE + EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO + THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU. + +10. U.S. GOVERNMENT END USERS. + + The Covered Code is a "commercial item," as that term is defined in 48 + C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer software" + and "commercial computer software documentation," as such terms are + used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 C.F.R. + 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all + U.S. Government End Users acquire Covered Code with only those rights + set forth herein. + +11. MISCELLANEOUS. + + This License represents the complete agreement concerning subject + matter hereof. If any provision of this License is held to be + unenforceable, such provision shall be reformed only to the extent + necessary to make it enforceable. This License sh... [truncated message content] |
From: <chr...@us...> - 2007-09-23 20:21:54
|
Revision: 614 http://japi.svn.sourceforge.net/japi/?rev=614&view=rev Author: christianhujer Date: 2007-09-23 13:21:52 -0700 (Sun, 23 Sep 2007) Log Message: ----------- Added tests for preferences. Fixed update bug. Modified Paths: -------------- libs/swing-prefs/trunk/libs-swing-prefs.iml libs/swing-prefs/trunk/src/net/sf/japi/swing/prefs/PreferencesPane.java Added Paths: ----------- libs/swing-prefs/trunk/src/test/ libs/swing-prefs/trunk/src/test/net/ libs/swing-prefs/trunk/src/test/net/sf/ libs/swing-prefs/trunk/src/test/net/sf/japi/ libs/swing-prefs/trunk/src/test/net/sf/japi/swing/ libs/swing-prefs/trunk/src/test/net/sf/japi/swing/prefs/ libs/swing-prefs/trunk/src/test/net/sf/japi/swing/prefs/MockActionBuilder.java libs/swing-prefs/trunk/src/test/net/sf/japi/swing/prefs/MockPrefs.java libs/swing-prefs/trunk/src/test/net/sf/japi/swing/prefs/PreferencesPaneTest.java libs/swing-prefs/trunk/src/test/net/sf/japi/swing/prefs/package-info.java Modified: libs/swing-prefs/trunk/libs-swing-prefs.iml =================================================================== --- libs/swing-prefs/trunk/libs-swing-prefs.iml 2007-09-23 20:11:01 UTC (rev 613) +++ libs/swing-prefs/trunk/libs-swing-prefs.iml 2007-09-23 20:21:52 UTC (rev 614) @@ -4,6 +4,7 @@ <exclude-output /> <content url="file://$MODULE_DIR$"> <sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" /> + <sourceFolder url="file://$MODULE_DIR$/src/test" isTestSource="true" packagePrefix="test" /> </content> <orderEntry type="inheritedJdk" /> <orderEntry type="sourceFolder" forTests="false" /> Modified: libs/swing-prefs/trunk/src/net/sf/japi/swing/prefs/PreferencesPane.java =================================================================== --- libs/swing-prefs/trunk/src/net/sf/japi/swing/prefs/PreferencesPane.java 2007-09-23 20:11:01 UTC (rev 613) +++ libs/swing-prefs/trunk/src/net/sf/japi/swing/prefs/PreferencesPane.java 2007-09-23 20:21:52 UTC (rev 614) @@ -95,6 +95,9 @@ */ private final JPanel cardPanel = new JPanel(cards); + /** The JList that displays the list of prefs modules. */ + private final JList prefsList; + /** Show Preferences. * @param parentComponent determines the Frame in which the dialog is displayed; if <code>null</code>, or if the <code>parentComponent</code> has * no <code>Frame</code>, a default <code>Frame</code> is used @@ -119,8 +122,9 @@ /** Create a PreferencesPane. * @param prefs PreferencesGroup to create panel for */ - private PreferencesPane(final PreferencesGroup prefs) { + public PreferencesPane(final PreferencesGroup prefs) { this.prefs = prefs; + prefsList = new JList(prefs); setMessage(createMessage()); setOptions(createOptions()); } @@ -139,11 +143,10 @@ * @return list */ private JComponent createList() { - final JList list = new JList(prefs); - list.setCellRenderer(new PrefsListCellRenderer()); - list.setSelectedIndex(0); - list.addListSelectionListener(this); - return new JScrollPane(list); + prefsList.setCellRenderer(new PrefsListCellRenderer()); + prefsList.setSelectedIndex(0); + prefsList.addListSelectionListener(this); + return new JScrollPane(prefsList); } /** Create the Panel. @@ -196,6 +199,8 @@ currentPref.apply(); break; case NO_OPTION: + currentPref.revert(); + break; default: } } @@ -256,6 +261,13 @@ } } + /** Returns the JList for selecting the prefs modules. + * @return The JList for selecting the prefs modules. + */ + public JList getPrefsList() { + return prefsList; + } + /** Class for rendering preferences list items. */ private static final class PrefsListCellRenderer extends DefaultListCellRenderer { Added: libs/swing-prefs/trunk/src/test/net/sf/japi/swing/prefs/MockActionBuilder.java =================================================================== --- libs/swing-prefs/trunk/src/test/net/sf/japi/swing/prefs/MockActionBuilder.java (rev 0) +++ libs/swing-prefs/trunk/src/test/net/sf/japi/swing/prefs/MockActionBuilder.java 2007-09-23 20:21:52 UTC (rev 614) @@ -0,0 +1,30 @@ +/* + * JAPI libs-swing-prefs is a library for adding preferences dialogs to an application. + * Copyright (C) 2007 Christian Hujer. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +package test.net.sf.japi.swing.prefs; + +import net.sf.japi.swing.DefaultActionBuilder; + +/** + * Created by IntelliJ IDEA. + * @author <a href="mailto:ch...@ri...">Christian Hujer</a> + */ +public class MockActionBuilder extends DefaultActionBuilder { + +} // class MockActionBuilder Property changes on: libs/swing-prefs/trunk/src/test/net/sf/japi/swing/prefs/MockActionBuilder.java ___________________________________________________________________ Name: svn:mime-type + text/plain Name: svn:eol-style + LF Added: libs/swing-prefs/trunk/src/test/net/sf/japi/swing/prefs/MockPrefs.java =================================================================== --- libs/swing-prefs/trunk/src/test/net/sf/japi/swing/prefs/MockPrefs.java (rev 0) +++ libs/swing-prefs/trunk/src/test/net/sf/japi/swing/prefs/MockPrefs.java 2007-09-23 20:21:52 UTC (rev 614) @@ -0,0 +1,121 @@ +/* + * JAPI libs-swing-prefs is a library for adding preferences dialogs to an application. + * Copyright (C) 2007 Christian Hujer. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +package test.net.sf.japi.swing.prefs; + +import java.util.HashMap; +import java.util.Map; +import javax.swing.JTextField; +import net.sf.japi.swing.prefs.AbstractPrefs; +import net.sf.japi.swing.prefs.Prefs; +import org.jetbrains.annotations.NotNull; + +/** MockPrefs is a {@link Prefs} implementation for testing. + * @author <a href="mailto:ch...@ri...">Christian Hujer</a> + * @todo Extract invocation counter. This probably would be a good use case for AOP. + */ +public class MockPrefs extends AbstractPrefs { + + /** Invocation Counter. */ + private final Map<String, int[]> invocationCounter = new HashMap<String, int[]>(); + + /** The Textfield for changes. */ + private JTextField textfield = new JTextField(); + + /** The text for changes. */ + private String text = ""; + + /** Creates MockPrefs. */ + public MockPrefs() { + // Initialize the invocation counter. + final String[] keys = { "apply", "defaults", "isChanged", "revert" }; + for (final String key : keys) { + invocationCounter.put(key, new int[1]); + } + add(textfield); + } + + /** {@inheritDoc} */ + public void apply() { + increment("apply"); + text = textfield.getText(); + } + + /** {@inheritDoc} */ + public void defaults() { + increment("defaults"); + text = ""; + textfield.setText(text); + } + + /** {@inheritDoc} */ + public boolean isChanged() { + increment("isChanged"); + return !text.equals(textfield.getText()); + } + + /** {@inheritDoc} */ + public void revert() { + increment("revert"); + textfield.setText(text); + } + + /** Increments an invocation count. + * @param key Key to increment. + */ + protected void increment(@NotNull final String key) { + invocationCounter.get(key)[0]++; + } + + /** Resets an invocation count. + * @param key Key to reset. + */ + public void reset(@NotNull final String key) { + invocationCounter.get(key)[0] = 0; + } + + /** Resets all invocation counts. */ + public void resetAll() { + for (final int[] val : invocationCounter.values()) { + val[0] = 0; + } + } + + /** Returns the text of this preferences. + * @return The text of this preferences. + */ + public String getText() { + return text; + } + + /** Sets the text of this preferences. + * @param text The text of this preferences. + */ + public void setText(final String text) { + this.text = text; + } + + /** Returns the textfield of this preferences. + * @return The textfield of this preferences. + */ + public JTextField getTextfield() { + return textfield; + } + +} // class MockPrefs Property changes on: libs/swing-prefs/trunk/src/test/net/sf/japi/swing/prefs/MockPrefs.java ___________________________________________________________________ Name: svn:mime-type + text/plain Name: svn:eol-style + LF Added: libs/swing-prefs/trunk/src/test/net/sf/japi/swing/prefs/PreferencesPaneTest.java =================================================================== --- libs/swing-prefs/trunk/src/test/net/sf/japi/swing/prefs/PreferencesPaneTest.java (rev 0) +++ libs/swing-prefs/trunk/src/test/net/sf/japi/swing/prefs/PreferencesPaneTest.java 2007-09-23 20:21:52 UTC (rev 614) @@ -0,0 +1,58 @@ +/* + * JAPI libs-swing-prefs is a library for adding preferences dialogs to an application. + * Copyright (C) 2007 Christian Hujer. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +package test.net.sf.japi.swing.prefs; + +import javax.swing.JList; +import javax.swing.JTextField; +import net.sf.japi.swing.ActionBuilderFactory; +import net.sf.japi.swing.prefs.PreferencesGroup; +import net.sf.japi.swing.prefs.PreferencesPane; +import org.junit.BeforeClass; +import org.junit.Test; + +/** Test for {@link PreferencesPane}. + * @author <a href="mailto:ch...@ri...">Christian Hujer</a> + */ +public class PreferencesPaneTest { + + @BeforeClass + public void setUpSuite() { + ActionBuilderFactory.getInstance().putActionBuilder("net.sf.japi.swing.prefs", new MockActionBuilder()); + } + + /** Tests that when selecting another preferences for changed preferences, "no" will revert the changes. + * @see <a href="http://sourceforge.net/tracker/index.php?func=detail&aid=1769634&group_id=149894&atid=776737">[ 1769634 ] Selecting "No" for changed preferences should revert</a> + */ + @Test + public void testSelectingNoForChangedPrefsReverts() { + final MockPrefs prefs1 = new MockPrefs(); + final MockPrefs prefs2 = new MockPrefs(); + final PreferencesGroup prefsGroup = new PreferencesGroup("", prefs1, prefs2); + final PreferencesPane pane = new PreferencesPane(prefsGroup); + final JList list = pane.getPrefsList(); + final JTextField tf1 = prefs1.getTextfield(); + tf1.setText(tf1.getText() + "_"); + list.setSelectedIndex(1); + // TODO: Check whether the dialog (apply changes? yes | no | cancel) is shown + // TODO: Tell Dialog to select "No" + // TODO: Check whether revert() was called and actually reverted the value. + } + +} // class PreferencesPaneTest Property changes on: libs/swing-prefs/trunk/src/test/net/sf/japi/swing/prefs/PreferencesPaneTest.java ___________________________________________________________________ Name: svn:mime-type + text/plain Name: svn:eol-style + LF Added: libs/swing-prefs/trunk/src/test/net/sf/japi/swing/prefs/package-info.java =================================================================== --- libs/swing-prefs/trunk/src/test/net/sf/japi/swing/prefs/package-info.java (rev 0) +++ libs/swing-prefs/trunk/src/test/net/sf/japi/swing/prefs/package-info.java 2007-09-23 20:21:52 UTC (rev 614) @@ -0,0 +1,23 @@ +/* + * JAPI libs-swing-prefs is a library for adding preferences dialogs to an application. + * Copyright (C) 2007 Christian Hujer. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/** Tests for {@link net.sf.japi.swing.prefs}. + * @author <a href="mailto:ch...@ri...">Christian Hujer</a> + */ +package test.net.sf.japi.swing.prefs; Property changes on: libs/swing-prefs/trunk/src/test/net/sf/japi/swing/prefs/package-info.java ___________________________________________________________________ Name: svn:mime-type + text/plain Name: svn:eol-style + LF This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |