From: <cpm...@us...> - 2011-09-26 17:55:50
|
Revision: 15409 http://pcgen.svn.sourceforge.net/pcgen/?rev=15409&view=rev Author: cpmeister Date: 2011-09-26 17:55:42 +0000 (Mon, 26 Sep 2011) Log Message: ----------- UI update - code cleanup on portrait/thumbnail panes - added SpellSupportFacade for implementation of spell tabs Modified Paths: -------------- sandbox/uisync/code/src/java/pcgen/core/facade/CharacterFacade.java sandbox/uisync/code/src/java/pcgen/core/facade/InfoFactory.java sandbox/uisync/code/src/java/pcgen/core/facade/SpellFacade.java sandbox/uisync/code/src/java/pcgen/gui2/facade/CharacterFacadeImpl.java sandbox/uisync/code/src/java/pcgen/gui2/tabs/bio/PortraitPane.java sandbox/uisync/code/src/java/pcgen/gui2/tabs/bio/ThumbnailPane.java Added Paths: ----------- sandbox/uisync/code/src/java/pcgen/core/facade/SpellSupportFacade.java sandbox/uisync/code/src/java/pcgen/gui2/tabs/spells/ sandbox/uisync/code/src/java/pcgen/gui2/tabs/spells/SpellNodeDataView.java sandbox/uisync/code/src/java/pcgen/gui2/tabs/spells/SpellTreeViewModel.java Modified: sandbox/uisync/code/src/java/pcgen/core/facade/CharacterFacade.java =================================================================== --- sandbox/uisync/code/src/java/pcgen/core/facade/CharacterFacade.java 2011-09-26 05:34:59 UTC (rev 15408) +++ sandbox/uisync/code/src/java/pcgen/core/facade/CharacterFacade.java 2011-09-26 17:55:42 UTC (rev 15409) @@ -141,7 +141,7 @@ * @return The list of active categories. */ public ListFacade<AbilityCategoryFacade> getActiveAbilityCategories(); - + /** * * @return @@ -153,6 +153,11 @@ public void removeCharacterLevels(int levels); + /** + * This returns the number of times that a given class has been taken by this character. + * @param c a ClassFacade + * @return the total level of a class + */ public int getClassLevel(ClassFacade c); public int getRemainingSelections(AbilityCategoryFacade category); @@ -165,13 +170,6 @@ * @return * @deprecated */ - public int getSkillTotal(SkillFacade skill, CharacterLevelFacade level); - - /** - * - * @return - * @deprecated - */ public int getSkillModifier(SkillFacade skill, CharacterLevelFacade level); /** @@ -525,5 +523,14 @@ } public Nature getAbilityNature(AbilityFacade ability); +// +// /** +// * @param category the category of the ability +// * @param ability the ability that has choices +// * @return a String which represents the choices made for this ability +// */ +// public String getAbilityChoiceDisplayString(AbilityCategoryFacade category, AbilityFacade ability); + public SpellSupportFacade getSpellSupport(); + } Modified: sandbox/uisync/code/src/java/pcgen/core/facade/InfoFactory.java =================================================================== --- sandbox/uisync/code/src/java/pcgen/core/facade/InfoFactory.java 2011-09-26 05:34:59 UTC (rev 15408) +++ sandbox/uisync/code/src/java/pcgen/core/facade/InfoFactory.java 2011-09-26 17:55:42 UTC (rev 15409) @@ -68,4 +68,6 @@ public String getHTMLInfo(TemplateFacade template); + public String getHTMLInfo(SpellFacade spell); + } Modified: sandbox/uisync/code/src/java/pcgen/core/facade/SpellFacade.java =================================================================== --- sandbox/uisync/code/src/java/pcgen/core/facade/SpellFacade.java 2011-09-26 05:34:59 UTC (rev 15408) +++ sandbox/uisync/code/src/java/pcgen/core/facade/SpellFacade.java 2011-09-26 17:55:42 UTC (rev 15409) @@ -18,13 +18,25 @@ * * Created on Aug 16, 2008, 2:22:10 PM */ - package pcgen.core.facade; /** * * @author Connor Petty <cpm...@us...> */ -public interface SpellFacade extends InfoFacade{ +public interface SpellFacade extends InfoFacade +{ + public String getSchool(); + + public String getSubschool(); + + public String[] getDescriptors(); + + public String getComponents(); + + public String getRange(); + + public String getDuration(); + } Added: sandbox/uisync/code/src/java/pcgen/core/facade/SpellSupportFacade.java =================================================================== --- sandbox/uisync/code/src/java/pcgen/core/facade/SpellSupportFacade.java (rev 0) +++ sandbox/uisync/code/src/java/pcgen/core/facade/SpellSupportFacade.java 2011-09-26 17:55:42 UTC (rev 15409) @@ -0,0 +1,113 @@ +/* + * SpellSupportFacade.java + * Copyright 2011 Connor Petty <cpm...@us...> + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * Created on Sep 22, 2011, 12:12:43 AM + */ +package pcgen.core.facade; + +import pcgen.core.facade.util.ListFacade; + +/** + * + * @author Connor Petty <cpm...@us...> + */ +public interface SpellSupportFacade +{ + + public ListFacade<SpellNode> getAvailableSpellNodes(); + + /** + * The returned list will be used to build the tree for all known spells. This includes + * known spells, innate spells, etc... + * @return a list containing the nodes for all known spells + */ + public ListFacade<SpellNode> getAllKnownSpellNodes(); + + public ListFacade<SpellNode> getKnownSpellNodes(); + + public ListFacade<SpellNode> getPreparedSpellNodes(); + + public ListFacade<SpellNode> getBookSpellNodes(); + + /** + * Adds the spell identified by the <code>SpellNode</code> to the list of known spells for + * the character associated with this <code>SpellSupportFacade</code>. The nodes that are used + * as a parameter will originate from the available spell nodes list and implementors should + * not reuse this node in other lists. The node serves as an identifier for the spell not as a + * literal object to add to other lists. Thus, this method should make a copy or otherwise make + * a new node based upon the parameter node and add that new node to other lists. + * @param spell the spell to add + */ + public void addKnownSpell(SpellNode spell); + + /** + * Removes the spell identified by the <code>SpellNode</code> from the list of known spells/ + * all known spells. + * @param spell the spell to remove + */ + public void removeKnownSpell(SpellNode spell); + + public void addPreparedSpell(SpellNode spell, String spellList); + + public void removePreparedSpell(SpellNode spell, String spellList); + + /** + * Creates a new spell list and updates the prepared spell node list + * @param spellList the name of the new spell list + */ + public void addSpellList(String spellList); + + /** + * Deletes a spell list and all spells associated with that spell list from the prepared spell + * node list. + * @param spellList the name of the spell list to delete + */ + public void removeSpellList(String spellList); + + public void addToSpellBook(SpellNode node, String spellBook); + + public void removeFromSpellBook(SpellNode node, String spellBook); + + /** + * Returns an html info string containing the spell caster info for a given class. + * @param spellcaster a spell caster class + * @return an HTML string + */ + public String getClassInfo(ClassFacade spellcaster); + + public static interface SpellNode + { + + public ClassFacade getSpellcastingClass(); + + public String getSpellLevel(); + + public SpellFacade getSpell(); + + /** + * Returns the name of the root of this node's tree. The returned string may be null + * such as for available spells which use the spellcasting class as the root node instead. + * In the case of prepared spells this root node may be the spell list name and for spellbooks + * the root is the spell book name etc... + * @return the root node string + */ + public String getRootNode(); + + } + +} Modified: sandbox/uisync/code/src/java/pcgen/gui2/facade/CharacterFacadeImpl.java =================================================================== --- sandbox/uisync/code/src/java/pcgen/gui2/facade/CharacterFacadeImpl.java 2011-09-26 05:34:59 UTC (rev 15408) +++ sandbox/uisync/code/src/java/pcgen/gui2/facade/CharacterFacadeImpl.java 2011-09-26 17:55:42 UTC (rev 15409) @@ -104,6 +104,7 @@ import pcgen.core.facade.ReferenceFacade; import pcgen.core.facade.SimpleFacade; import pcgen.core.facade.SkillFacade; +import pcgen.core.facade.SpellSupportFacade; import pcgen.core.facade.StatFacade; import pcgen.core.facade.TempBonusFacade; import pcgen.core.facade.TemplateFacade; @@ -2770,5 +2771,15 @@ } return value; } +// +// public String getAbilityChoiceDisplayString(AbilityCategoryFacade category, AbilityFacade ability) +// { +// return "";//TODO: implement +// } + + public SpellSupportFacade getSpellSupport() + { + throw new UnsupportedOperationException("Not supported yet."); + } } Modified: sandbox/uisync/code/src/java/pcgen/gui2/tabs/bio/PortraitPane.java =================================================================== --- sandbox/uisync/code/src/java/pcgen/gui2/tabs/bio/PortraitPane.java 2011-09-26 05:34:59 UTC (rev 15408) +++ sandbox/uisync/code/src/java/pcgen/gui2/tabs/bio/PortraitPane.java 2011-09-26 17:55:42 UTC (rev 15409) @@ -42,10 +42,10 @@ { private static final int MAX_PORTRAIT_HEIGHT = 400; + private final ThumbnailPane thumbnailPane; private float scale = 1; private BufferedImage portrait; private Rectangle cropRect; - private final ThumbnailPane thumbnailPane; public PortraitPane(ThumbnailPane thumbnailPane) { @@ -74,24 +74,25 @@ protected void paintComponent(Graphics g) { Insets insets = getInsets(); - if (scale >= 1) + if (scale < 1) { - g.drawImage(portrait, insets.left, insets.top, this); - } - else - { int width, height; width = (int) (scale * portrait.getWidth()); height = (int) (scale * portrait.getHeight()); g.drawImage(portrait, insets.left, insets.top, width, height, this); } + else + { + g.drawImage(portrait, insets.left, insets.top, this); + } g.setColor(Color.BLACK); g.setXORMode(Color.WHITE); if (cropRect != null) { if (scale < 1) { - g.drawRect(((int) (cropRect.x * scale)) + insets.left, ((int) (cropRect.y * scale)) + insets.top, + g.drawRect(((int) (cropRect.x * scale)) + insets.left, + ((int) (cropRect.y * scale)) + insets.top, (int) (cropRect.width * scale), (int) (cropRect.height * scale)); } else @@ -210,13 +211,14 @@ return; } int units = e.getUnitsToScroll(); - int size; - size = Math.max(100, cropRect.width + units); - size = Math.min(portrait.getWidth() - 1, size); - size = Math.min(portrait.getHeight() - 1, size); + int size = cropRect.width + units; + size = Math.max(size, 100); + size = Math.min(size, portrait.getWidth() - 1); + size = Math.min(size, portrait.getHeight() - 1); + cropRect.width = size; cropRect.height = size; - + int x = cropRect.x; int y = cropRect.y; x = Math.min(x, portrait.getWidth() - cropRect.width - 1); @@ -229,4 +231,5 @@ } } + } Modified: sandbox/uisync/code/src/java/pcgen/gui2/tabs/bio/ThumbnailPane.java =================================================================== --- sandbox/uisync/code/src/java/pcgen/gui2/tabs/bio/ThumbnailPane.java 2011-09-26 05:34:59 UTC (rev 15408) +++ sandbox/uisync/code/src/java/pcgen/gui2/tabs/bio/ThumbnailPane.java 2011-09-26 17:55:42 UTC (rev 15409) @@ -23,12 +23,9 @@ import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics; -import java.awt.Image; import java.awt.Insets; import java.awt.Rectangle; import java.awt.image.BufferedImage; -import java.awt.image.CropImageFilter; -import java.awt.image.FilteredImageSource; import javax.swing.BorderFactory; import javax.swing.JComponent; Added: sandbox/uisync/code/src/java/pcgen/gui2/tabs/spells/SpellNodeDataView.java =================================================================== --- sandbox/uisync/code/src/java/pcgen/gui2/tabs/spells/SpellNodeDataView.java (rev 0) +++ sandbox/uisync/code/src/java/pcgen/gui2/tabs/spells/SpellNodeDataView.java 2011-09-26 17:55:42 UTC (rev 15409) @@ -0,0 +1,43 @@ +package pcgen.gui2.tabs.spells; + +import java.util.Arrays; +import java.util.List; +import org.apache.commons.lang.StringUtils; +import pcgen.core.facade.SpellFacade; +import pcgen.core.facade.SpellSupportFacade.SpellNode; +import pcgen.gui2.util.treeview.DataView; +import pcgen.gui2.util.treeview.DataViewColumn; +import pcgen.gui2.util.treeview.DefaultDataViewColumn; + +class SpellNodeDataView implements DataView<SpellNode> +{ + + private final List<? extends DataViewColumn> columns; + + public SpellNodeDataView(boolean initiallyVisible) + { + super(); + columns = Arrays.asList(new DefaultDataViewColumn("School", String.class, initiallyVisible), + new DefaultDataViewColumn("Subschool", String.class, initiallyVisible), + new DefaultDataViewColumn("Descriptors", String.class, initiallyVisible), + new DefaultDataViewColumn("Components", String.class, initiallyVisible), + new DefaultDataViewColumn("Range", String.class), + new DefaultDataViewColumn("Duration", String.class), + new DefaultDataViewColumn("Source", String.class)); + } + + public List<?> getData(SpellNode obj) + { + SpellFacade spell = obj.getSpell(); + return Arrays.asList(spell.getSchool(), spell.getSubschool(), + StringUtils.join(spell.getDescriptors(), ", "), + spell.getComponents(), spell.getRange(), + spell.getDuration(), spell.getSource()); + } + + public List<? extends DataViewColumn> getDataColumns() + { + return columns; + } + +} Added: sandbox/uisync/code/src/java/pcgen/gui2/tabs/spells/SpellTreeViewModel.java =================================================================== --- sandbox/uisync/code/src/java/pcgen/gui2/tabs/spells/SpellTreeViewModel.java (rev 0) +++ sandbox/uisync/code/src/java/pcgen/gui2/tabs/spells/SpellTreeViewModel.java 2011-09-26 17:55:42 UTC (rev 15409) @@ -0,0 +1,111 @@ +/* + * SpellTreeViewModel.java + * Copyright 2011 Connor Petty <cpm...@us...> + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * Created on Sep 23, 2011, 2:02:31 PM + */ +package pcgen.gui2.tabs.spells; + +import java.util.Arrays; +import java.util.List; +import pcgen.core.facade.CharacterFacade; +import pcgen.core.facade.SpellSupportFacade.SpellNode; +import pcgen.core.facade.util.DefaultListFacade; +import pcgen.core.facade.util.ListFacade; +import pcgen.gui2.util.treeview.DataView; +import pcgen.gui2.util.treeview.TreeView; +import pcgen.gui2.util.treeview.TreeViewPath; + +/** + * + * @author Connor Petty <cpm...@us...> + */ +public class SpellTreeViewModel +{ + + private final SpellNodeDataView dataView; + private final ListFacade<SpellNode> spellNodes; + private final ListFacade<SpellTreeView> treeViews; + + public SpellTreeViewModel(ListFacade<SpellNode> spellNodes, boolean showcolumns) + { + this.spellNodes = spellNodes; + this.treeViews = new DefaultListFacade<SpellTreeView>(Arrays.asList(SpellTreeView.values())); + this.dataView = new SpellNodeDataView(showcolumns); + } + + public ListFacade<? extends TreeView<SpellNode>> getTreeViews() + { + return treeViews; + } + + public int getDefaultTreeViewIndex() + { + return 0; + } + + public DataView<SpellNode> getDataView() + { + return dataView; + } + + public ListFacade<SpellNode> getDataModel() + { + return spellNodes; + } + + private enum SpellTreeView implements TreeView<SpellNode> + { + + CLASS_LEVEL_SPELL("Class/Level/Spell"); + private String name; + + private SpellTreeView(String name) + { + this.name = name; + } + + public String getViewName() + { + return name; + } + + @SuppressWarnings("unchecked") + public List<TreeViewPath<SpellNode>> getPaths(SpellNode pobj) + { + TreeViewPath<SpellNode> path; + switch (this) + { + case CLASS_LEVEL_SPELL: + if (pobj.getRootNode() == null) + { + path = new TreeViewPath<SpellNode>(pobj, pobj.getSpellcastingClass(), pobj.getSpellLevel()); + } + else + { + path = new TreeViewPath<SpellNode>(pobj, pobj.getRootNode(), pobj.getSpellcastingClass(), pobj.getSpellLevel()); + } + break; + default: + throw new InternalError(); + } + return Arrays.asList(path); + } + + } + +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |