From: <aki...@us...> - 2008-08-05 19:37:29
|
Revision: 4763 http://gridarta.svn.sourceforge.net/gridarta/?rev=4763&view=rev Author: akirschbaum Date: 2008-08-05 19:37:23 +0000 (Tue, 05 Aug 2008) Log Message: ----------- Implement new view for archetype chooser: "Display icons only". Modified Paths: -------------- trunk/crossfire/ChangeLog trunk/crossfire/src/cfeditor/action.properties trunk/daimonin/ChangeLog trunk/daimonin/src/daieditor/action.properties trunk/src/app/net/sf/gridarta/gui/archetypechooser/ArchetypeChooserView.java trunk/src/app/net/sf/gridarta/gui/archetypechooser/ArchetypeNameCellRenderer.java trunk/src/app/net/sf/gridarta/gui/archetypechooser/ArchetypePanel.java trunk/src/app/net/sf/gridarta/gui/archetypechooser/DisplayMode.java trunk/src/app/net/sf/gridarta/gui/archetypechooser/DisplayNameCellRenderer.java trunk/src/app/net/sf/gridarta/messages.properties trunk/src/app/net/sf/gridarta/messages_de.properties trunk/src/app/net/sf/gridarta/messages_fr.properties trunk/src/app/net/sf/gridarta/messages_sv.properties Added Paths: ----------- trunk/src/app/net/sf/gridarta/gui/archetypechooser/ArchetypeIconCellRenderer.java Modified: trunk/crossfire/ChangeLog =================================================================== --- trunk/crossfire/ChangeLog 2008-08-05 19:22:03 UTC (rev 4762) +++ trunk/crossfire/ChangeLog 2008-08-05 19:37:23 UTC (rev 4763) @@ -1,3 +1,7 @@ +2008-08-05 Andreas Kirschbaum + + * Implement new view for archetype chooser: "Display icons only". + 2008-07-24 Andreas Kirschbaum * Fix #1961165 (Fields too short). Modified: trunk/crossfire/src/cfeditor/action.properties =================================================================== --- trunk/crossfire/src/cfeditor/action.properties 2008-08-05 19:22:03 UTC (rev 4762) +++ trunk/crossfire/src/cfeditor/action.properties 2008-08-05 19:37:23 UTC (rev 4763) @@ -30,7 +30,7 @@ file.menu=createNew open recent close - save saveAs saveAll revert createImage - options - exit edit.menu=undo redo - clear cut copy paste - shift - replace fillAbove fillBelow randFillAbove randFillBelow floodfill - selectAll map.menu=autoJoin - enterExit enterNorthMap enterEastMap enterSouthMap enterWestMap tileShow - mapCreateView mapProperties shrinkMapSize -archetypes.menu=displayObjectNames findArchetypes +archetypes.menu=displayGameObjectNames displayArchetypeNames displayIconsOnly - findArchetypes #pickmaps.menu: See gridarta resources.menu=collectArches - viewTreasurelists tools.menu=newScript editScript - validateMap - zoom gc Modified: trunk/daimonin/ChangeLog =================================================================== --- trunk/daimonin/ChangeLog 2008-08-05 19:22:03 UTC (rev 4762) +++ trunk/daimonin/ChangeLog 2008-08-05 19:37:23 UTC (rev 4763) @@ -1,3 +1,7 @@ +2008-08-05 Andreas Kirschbaum + + * Implement new view for archetype chooser: "Display icons only". + 2008-07-23 Andreas Kirschbaum * Fix map validator error messages: include actual parameter Modified: trunk/daimonin/src/daieditor/action.properties =================================================================== --- trunk/daimonin/src/daieditor/action.properties 2008-08-05 19:22:03 UTC (rev 4762) +++ trunk/daimonin/src/daieditor/action.properties 2008-08-05 19:37:23 UTC (rev 4763) @@ -30,7 +30,7 @@ file.menu=createNew open recent close - save saveAs saveAll revert createImage - options - exit edit.menu=undo redo - clear cut copy paste - shift - replace fillAbove fillBelow randFillAbove randFillBelow floodfill - selectAll map.menu=autoJoin - enterExit enterNorthMap enterEastMap enterSouthMap enterWestMap enterNorthEastMap enterSouthEastMap enterSouthWestMap enterNorthWestMap - mapCreateView mapProperties shrinkMapSize -archetypes.menu=displayObjectNames findArchetypes +archetypes.menu=displayGameObjectNames displayArchetypeNames displayIconsOnly - findArchetypes #pickmaps.menu: See gridarta resources.menu=collectArches collectSpells - reloadFaces - viewTreasurelists tools.menu=newScript editScript - controlServer controlClient - validateMap cleanCompletelyBlockedSquares - zoom gc Modified: trunk/src/app/net/sf/gridarta/gui/archetypechooser/ArchetypeChooserView.java =================================================================== --- trunk/src/app/net/sf/gridarta/gui/archetypechooser/ArchetypeChooserView.java 2008-08-05 19:22:03 UTC (rev 4762) +++ trunk/src/app/net/sf/gridarta/gui/archetypechooser/ArchetypeChooserView.java 2008-08-05 19:37:23 UTC (rev 4763) @@ -24,8 +24,10 @@ import java.util.List; import java.util.prefs.Preferences; import javax.swing.BorderFactory; +import javax.swing.ButtonGroup; import javax.swing.JPanel; import javax.swing.JTabbedPane; +import javax.swing.JToggleButton; import javax.swing.SwingConstants; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; @@ -36,7 +38,6 @@ import net.sf.gridarta.gui.map.MapViewBasic; import net.sf.gridarta.map.MapArchObject; import net.sf.japi.swing.ActionFactory; -import net.sf.japi.swing.ToggleAction; import org.jetbrains.annotations.NotNull; /** @@ -48,7 +49,7 @@ /** * The key for saving the display mode selection. */ - private static final String DISPLAY_OBJECT_NAMES = "archetypesDisplayObjectNames"; + private static final String DISPLAY_MODE_KEY = "archetypeChooserDisplayMode"; /** * The serial version UID. @@ -67,10 +68,18 @@ @NotNull private final List<ArchetypeChooserViewListener<G, A, R>> listeners = new ArrayList<ArchetypeChooserViewListener<G, A, R>>(); - /** Action for "display object names". */ + /** The button for "display game object names". */ @NotNull - private final ToggleAction aDisplayObjectNames = (ToggleAction) ACTION_FACTORY.createToggle(true, "displayObjectNames", this); + private final JToggleButton buttonDisplayGameObjectNames = new JToggleButton(ACTION_FACTORY.createAction(true, "displayGameObjectNames", this)); + /** The button for "display archetype names". */ + @NotNull + private final JToggleButton buttonDisplayArchetypeNames = new JToggleButton(ACTION_FACTORY.createAction(true, "displayArchetypeNames", this)); + + /** The button for "display icons only". */ + @NotNull + private final JToggleButton buttonDisplayIconsOnly = new JToggleButton(ACTION_FACTORY.createAction(true, "displayIconsOnly", this)); + /** * The main control. */ @@ -106,6 +115,12 @@ private final DisplayMode<R> displayModeArchetypeNames; /** + * The list cell renderer displaying archetype icons. + */ + @NotNull + private final DisplayMode<R> displayModeIconsOnly; + + /** * The change listener attached to {@link #tabDesktop}. */ private final ChangeListener changeListener = new ChangeListener() { @@ -130,7 +145,27 @@ this.archetypeChooserModel = archetypeChooserModel; displayModeGameObjectNames = new DisplayNameCellRenderer<R>(archetypeChooserModel.getArchetypeSet()); displayModeArchetypeNames = new ArchetypeNameCellRenderer<R>(archetypeChooserModel.getArchetypeSet()); - setDisplayObjectNames(prefs.getBoolean(DISPLAY_OBJECT_NAMES, false)); + displayModeIconsOnly = new ArchetypeIconCellRenderer<R>(archetypeChooserModel.getArchetypeSet()); + final ButtonGroup buttonGroup = new ButtonGroup(); + buttonGroup.add(buttonDisplayGameObjectNames); + buttonGroup.add(buttonDisplayArchetypeNames); + buttonGroup.add(buttonDisplayIconsOnly); + final int prefsDisplayMode = prefs.getInt(DISPLAY_MODE_KEY, 0); + switch (prefsDisplayMode) { + case 0: + default: + displayMode = displayModeGameObjectNames; + break; + + case 1: + displayMode = displayModeArchetypeNames; + break; + + case 2: + displayMode = displayModeIconsOnly; + break; + } + fireDisplayObjectNamesChangedEvent(); tabDesktop.setBorder(BorderFactory.createEmptyBorder(CommonConstants.SPACE_PICKARCH_TOP, 0, 0, 0)); add(tabDesktop); if (createDirectionPane) { @@ -196,6 +231,13 @@ * Notifies all listeners that the display mode has changed. */ private void fireDisplayObjectNamesChangedEvent() { + if (displayMode == displayModeGameObjectNames) { + prefs.putInt(DISPLAY_MODE_KEY, 0); + } else if (displayMode == displayModeArchetypeNames) { + prefs.putInt(DISPLAY_MODE_KEY, 1); + } if (displayMode == displayModeIconsOnly) { + prefs.putInt(DISPLAY_MODE_KEY, 2); + } updateActions(); for (final ArchetypeChooserViewListener<G, A, R> listener : listeners) { listener.displayModeChanged(displayMode); @@ -206,36 +248,46 @@ * Returns the current display mode. * @return the current display mode */ + @NotNull public DisplayMode<R> getDisplayMode() { return displayMode; } /** - * Action method for "display object names". - * @return <code>true</code> if object names are shown, or - * <code>false</code> if archetype names are shown. + * Updates the display mode. + * @param displayMode the new display mode */ - public boolean isDisplayObjectNames() { - return displayMode == displayModeGameObjectNames; + private void setDisplayMode(@NotNull final DisplayMode<R> displayMode) { + if (this.displayMode == displayMode) { + return; + } + + this.displayMode = displayMode; + fireDisplayObjectNamesChangedEvent(); } /** - * Sets whether object or archetype names are shown. - * @param displayObjectNames the new setting - * @see #getDisplayMode() + * Sets whether game object names are shown. */ - public void setDisplayObjectNames(final boolean displayObjectNames) { - final DisplayMode<R> newDisplayMode = displayObjectNames ? displayModeGameObjectNames : displayModeArchetypeNames; - if (displayMode == newDisplayMode) { - return; - } + public void displayGameObjectNames() { + setDisplayMode(displayModeGameObjectNames); + } - displayMode = newDisplayMode; - prefs.putBoolean(DISPLAY_OBJECT_NAMES, displayObjectNames); - fireDisplayObjectNamesChangedEvent(); + /** + * Sets whether archetype names are shown. + */ + public void displayArchetypeNames() { + setDisplayMode(displayModeArchetypeNames); } /** + * Sets whether icons are shown. + */ + public void displayIconsOnly() { + setDisplayMode(displayModeIconsOnly); + } + + /** * Adds a listener to be notified of events. * @param listener the listener to add */ @@ -255,7 +307,13 @@ * Update the actions' state. */ private void updateActions() { - aDisplayObjectNames.setSelected(displayMode == displayModeGameObjectNames); + if (displayMode == displayModeGameObjectNames) { + buttonDisplayGameObjectNames.setSelected(true); + } else if (displayMode == displayModeArchetypeNames) { + buttonDisplayArchetypeNames.setSelected(true); + } else if (displayMode == displayModeIconsOnly) { + buttonDisplayIconsOnly.setSelected(true); + } } } // class ArchetypeChooserView Added: trunk/src/app/net/sf/gridarta/gui/archetypechooser/ArchetypeIconCellRenderer.java =================================================================== --- trunk/src/app/net/sf/gridarta/gui/archetypechooser/ArchetypeIconCellRenderer.java (rev 0) +++ trunk/src/app/net/sf/gridarta/gui/archetypechooser/ArchetypeIconCellRenderer.java 2008-08-05 19:37:23 UTC (rev 4763) @@ -0,0 +1,72 @@ +/* + * Gridarta MMORPG map editor for Crossfire, Daimonin and similar games. + * Copyright (C) 2000-2007 The Gridarta Developers. + * + * 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., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +package net.sf.gridarta.gui.archetypechooser; + +import java.awt.Component; +import javax.swing.DefaultListCellRenderer; +import javax.swing.JList; +import net.sf.gridarta.gameobject.Archetype; +import net.sf.gridarta.gameobject.ArchetypeSet; +import org.jetbrains.annotations.NotNull; + +/** + * A {@link DefaultListCellRenderer} showing archetypes as images only. + * @author Andreas Kirschbaum + */ +public final class ArchetypeIconCellRenderer<R extends Archetype<?, ?, R>> extends DisplayMode<R> { + + /** Serial Version UID. */ + private static final long serialVersionUID = 1L; + + /** The archetype set for looking up faces. */ + @NotNull + private final ArchetypeSet<?, ?, R> archetypeSet; + + /** + * Creates a new instance. + * @param archetypeSet the archetype set for looking up faces + */ + public ArchetypeIconCellRenderer(@NotNull final ArchetypeSet<?, ?, R> archetypeSet) { + this.archetypeSet = archetypeSet; + } + + /** {@inheritDoc} */ + @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); + + final R archetype = (R) value; + setIcon(archetypeSet.getFace(archetype)); + setText(""); + return this; + } + + /** {@inheritDoc} */ + public int compare(final R o1, final R o2) { + return o1.getArchetypeName().compareToIgnoreCase(o2.getArchetypeName()); + } + + /** {@inheritDoc} */ + @Override + public int getLayoutOrientation() { + return JList.HORIZONTAL_WRAP; + } + +} // class ArchetypeIconCellRenderer Property changes on: trunk/src/app/net/sf/gridarta/gui/archetypechooser/ArchetypeIconCellRenderer.java ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:eol-style + LF Modified: trunk/src/app/net/sf/gridarta/gui/archetypechooser/ArchetypeNameCellRenderer.java =================================================================== --- trunk/src/app/net/sf/gridarta/gui/archetypechooser/ArchetypeNameCellRenderer.java 2008-08-05 19:22:03 UTC (rev 4762) +++ trunk/src/app/net/sf/gridarta/gui/archetypechooser/ArchetypeNameCellRenderer.java 2008-08-05 19:37:23 UTC (rev 4763) @@ -64,4 +64,10 @@ return o1.getArchetypeName().compareToIgnoreCase(o2.getArchetypeName()); } + /** {@inheritDoc} */ + @Override + public int getLayoutOrientation() { + return JList.VERTICAL; + } + } // class ArchetypeNameCellRenderer Modified: trunk/src/app/net/sf/gridarta/gui/archetypechooser/ArchetypePanel.java =================================================================== --- trunk/src/app/net/sf/gridarta/gui/archetypechooser/ArchetypePanel.java 2008-08-05 19:22:03 UTC (rev 4762) +++ trunk/src/app/net/sf/gridarta/gui/archetypechooser/ArchetypePanel.java 2008-08-05 19:37:23 UTC (rev 4763) @@ -152,6 +152,8 @@ private void updateCellRenderer(@NotNull final DisplayMode<R> displayMode) { this.displayMode = displayMode; archList.setCellRenderer(displayMode); + archList.setLayoutOrientation(displayMode.getLayoutOrientation()); + archList.setVisibleRowCount(-1); final Object selectedValue = archList.getSelectedValue(); showArchList(); if (selectedValue != null) { Modified: trunk/src/app/net/sf/gridarta/gui/archetypechooser/DisplayMode.java =================================================================== --- trunk/src/app/net/sf/gridarta/gui/archetypechooser/DisplayMode.java 2008-08-05 19:22:03 UTC (rev 4762) +++ trunk/src/app/net/sf/gridarta/gui/archetypechooser/DisplayMode.java 2008-08-05 19:37:23 UTC (rev 4763) @@ -42,4 +42,11 @@ protected DisplayMode() { } + /** + * Returns the layout orientation. See {@link + * javax.swing.JList#getLayoutOrientation}. + * @return the layout orientation + */ + public abstract int getLayoutOrientation(); + } // class DisplayMode Modified: trunk/src/app/net/sf/gridarta/gui/archetypechooser/DisplayNameCellRenderer.java =================================================================== --- trunk/src/app/net/sf/gridarta/gui/archetypechooser/DisplayNameCellRenderer.java 2008-08-05 19:22:03 UTC (rev 4762) +++ trunk/src/app/net/sf/gridarta/gui/archetypechooser/DisplayNameCellRenderer.java 2008-08-05 19:37:23 UTC (rev 4763) @@ -69,4 +69,10 @@ return o1.getArchetypeName().compareToIgnoreCase(o2.getArchetypeName()); } + /** {@inheritDoc} */ + @Override + public int getLayoutOrientation() { + return JList.VERTICAL; + } + } // class DisplayNameCellRenderer Modified: trunk/src/app/net/sf/gridarta/messages.properties =================================================================== --- trunk/src/app/net/sf/gridarta/messages.properties 2008-08-05 19:22:03 UTC (rev 4762) +++ trunk/src/app/net/sf/gridarta/messages.properties 2008-08-05 19:37:23 UTC (rev 4763) @@ -674,7 +674,7 @@ ################### # Preferences file prefs.archDirectory=Archetype directory. -prefs.archetypesDisplayObjectNames=Whether "display object names" is selected. +prefs.archetypeChooserDisplayMode=The display mode of the archetype chooser: 0=game object names, 1=archetype names, 2=icons only. prefs.autogenPreviews=If set, automatically generate map preview images. prefs.autojoin=Whether autojoining is enabled. prefs.autoValidate=Whether the map validator is run automatically after each change. @@ -925,7 +925,9 @@ ############ # Archetypes -displayObjectNames.text=Display object names +displayGameObjectNames.text=Display game object names +displayArchetypeNames.text=Display archetype names +displayIconsOnly.text=Display icons only findArchetypes.text=Find archetype findArchetypes.accel=ctrl alt pressed A Modified: trunk/src/app/net/sf/gridarta/messages_de.properties =================================================================== --- trunk/src/app/net/sf/gridarta/messages_de.properties 2008-08-05 19:22:03 UTC (rev 4762) +++ trunk/src/app/net/sf/gridarta/messages_de.properties 2008-08-05 19:37:23 UTC (rev 4763) @@ -791,7 +791,9 @@ ############ # Archetypes -displayObjectNames.text=Objektnamen anzeigen +displayGameObjectNames.text=Objektnamen anzeigen +displayArchetypeNames.text=Archetypnamen anzeigen +displayIconsOnly.text=Bilder anzeigen findArchetypes.text=Archetypen finden Modified: trunk/src/app/net/sf/gridarta/messages_fr.properties =================================================================== --- trunk/src/app/net/sf/gridarta/messages_fr.properties 2008-08-05 19:22:03 UTC (rev 4762) +++ trunk/src/app/net/sf/gridarta/messages_fr.properties 2008-08-05 19:37:23 UTC (rev 4763) @@ -790,7 +790,9 @@ ############ # Archetypes -#displayObjectNames.text= +#displayGameObjectNames.text= +#displayArchetypeNames.text= +#displayIconsOnly.text= #findArchetypes.text= Modified: trunk/src/app/net/sf/gridarta/messages_sv.properties =================================================================== --- trunk/src/app/net/sf/gridarta/messages_sv.properties 2008-08-05 19:22:03 UTC (rev 4762) +++ trunk/src/app/net/sf/gridarta/messages_sv.properties 2008-08-05 19:37:23 UTC (rev 4763) @@ -794,7 +794,9 @@ ############ # Archetypes -#displayObjectNames.text= +#displayGameObjectNames.text= +#displayArchetypeNames.text= +#displayIconsOnly.text= #findArchetypes.text= This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |