From: <cpm...@us...> - 2011-10-02 05:49:24
|
Revision: 15423 http://pcgen.svn.sourceforge.net/pcgen/?rev=15423&view=rev Author: cpmeister Date: 2011-10-02 05:49:17 +0000 (Sun, 02 Oct 2011) Log Message: ----------- Spell tabs first pass Modified Paths: -------------- sandbox/uisync/code/src/java/pcgen/gui2/tabs/SpellsInfoTab.java sandbox/uisync/code/src/java/pcgen/gui2/tabs/spells/SpellTreeViewModel.java Added Paths: ----------- sandbox/uisync/code/src/java/pcgen/gui2/tabs/spells/SpellBooksTab.java sandbox/uisync/code/src/java/pcgen/gui2/tabs/spells/SpellsKnownTab.java sandbox/uisync/code/src/java/pcgen/gui2/tabs/spells/SpellsPreparedTab.java Modified: sandbox/uisync/code/src/java/pcgen/gui2/tabs/SpellsInfoTab.java =================================================================== --- sandbox/uisync/code/src/java/pcgen/gui2/tabs/SpellsInfoTab.java 2011-10-02 03:09:15 UTC (rev 15422) +++ sandbox/uisync/code/src/java/pcgen/gui2/tabs/SpellsInfoTab.java 2011-10-02 05:49:17 UTC (rev 15423) @@ -22,6 +22,13 @@ */ package pcgen.gui2.tabs; +import java.util.Hashtable; +import javax.swing.JTabbedPane; +import pcgen.core.facade.CharacterFacade; +import pcgen.gui2.tabs.spells.SpellBooksTab; +import pcgen.gui2.tabs.spells.SpellsKnownTab; +import pcgen.gui2.tabs.spells.SpellsPreparedTab; + /** * The Class <code>SpellsInfoTab</code> is a placeholder for the yet * to be implemented Seplls tab. @@ -32,12 +39,46 @@ * @author James Dempsey <jde...@us...> * @version $Revision: 13208 $ */ -public class SpellsInfoTab extends UnimplementedTab +public class SpellsInfoTab extends JTabbedPane implements CharacterInfoTab { - @Override - String getTabName() + + private final TabTitle tabTitle = new TabTitle("Spells"); + private final SpellsKnownTab knownTab = new SpellsKnownTab(); + private final SpellsPreparedTab preparedTab = new SpellsPreparedTab(); + private final SpellBooksTab booksTab = new SpellBooksTab(); + + public SpellsInfoTab() { - return "Spells"; + addTab("Known Spells", knownTab); + addTab("Prepared Spells", preparedTab); + addTab("Spell Books", booksTab); } + public Hashtable<Object, Object> createModels(CharacterFacade character) + { + Hashtable<Object, Object> table = new Hashtable<Object, Object>(); +// table.put(knownTab, knownTab.createModels(character)); +// table.put(preparedTab, preparedTab.createModels(character)); +// table.put(booksTab, booksTab.createModels(character)); + return table; + } + + public void restoreModels(Hashtable<?, ?> state) + { +// knownTab.restoreModels((Hashtable<?, ?>) state.get(knownTab)); +// preparedTab.restoreModels((Hashtable<?, ?>) state.get(preparedTab)); + } + + public void storeModels(Hashtable<Object, Object> state) + { +// knownTab.storeModels((Hashtable<Object, Object>) state.get(knownTab)); +// preparedTab.storeModels((Hashtable<Object, Object>) state.get(preparedTab)); +// booksTab.storeModels((Hashtable<Object, Object>) state.get(booksTab)); + } + + public TabTitle getTabTitle() + { + return tabTitle; + } + } Added: sandbox/uisync/code/src/java/pcgen/gui2/tabs/spells/SpellBooksTab.java =================================================================== --- sandbox/uisync/code/src/java/pcgen/gui2/tabs/spells/SpellBooksTab.java (rev 0) +++ sandbox/uisync/code/src/java/pcgen/gui2/tabs/spells/SpellBooksTab.java 2011-10-02 05:49:17 UTC (rev 15423) @@ -0,0 +1,122 @@ +/* + * SpellBooksTab.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 Oct 1, 2011, 10:09:50 PM + */ +package pcgen.gui2.tabs.spells; + +import java.util.Hashtable; +import javax.swing.Box; +import javax.swing.JButton; +import javax.swing.JScrollPane; +import pcgen.core.facade.CharacterFacade; +import pcgen.gui2.tabs.TabTitle; +import pcgen.gui2.tools.FlippingSplitPane; +import pcgen.gui2.tools.InfoPane; +import pcgen.gui2.util.JTreeViewTable; + +/** + * + * @author Connor Petty <cpm...@us...> + */ +public class SpellBooksTab extends FlippingSplitPane +{ + + private final TabTitle tabTitle = new TabTitle("Spell Books"); + private final JTreeViewTable availableTable; + private final JTreeViewTable selectedTable; + private final JButton addButton; + private final JButton removeButton; + private final InfoPane spellsPane; + private final InfoPane classPane; + + public SpellBooksTab() + { + this.availableTable = new JTreeViewTable(); + this.selectedTable = new JTreeViewTable(); + this.addButton = new JButton(); + this.removeButton = new JButton(); + this.spellsPane = new InfoPane("Spell Info"); + this.classPane = new InfoPane("Class Info"); + initComponents(); + } + + private void initComponents() + { + FlippingSplitPane upperPane = new FlippingSplitPane(); + Box box = Box.createVerticalBox(); + box.add(new JScrollPane(availableTable)); + box.add(addButton); + upperPane.setLeftComponent(box); + + box = Box.createVerticalBox(); + box.add(new JScrollPane(selectedTable)); + box.add(removeButton); + + upperPane.setRightComponent(box); + setTopComponent(upperPane); + + FlippingSplitPane bottomPane = new FlippingSplitPane(); + bottomPane.setLeftComponent(spellsPane); + bottomPane.setRightComponent(classPane); + setBottomComponent(bottomPane); + setOrientation(VERTICAL_SPLIT); + } + + public Hashtable<Object, Object> createModels(CharacterFacade character) + { + Hashtable<Object, Object> state = new Hashtable<Object, Object>(); + state.put(TreeViewModelHandler.class, new TreeViewModelHandler(character)); + return state; + } + + public void restoreModels(Hashtable<?, ?> state) + { + ((TreeViewModelHandler) state.get(TreeViewModelHandler.class)).install(); + } + + public void storeModels(Hashtable<Object, Object> state) + { + } + + public TabTitle getTabTitle() + { + return tabTitle; + } + + private class TreeViewModelHandler + { + + private SpellTreeViewModel availableModel; + private SpellTreeViewModel selectedModel; + + public TreeViewModelHandler(CharacterFacade character) + { + availableModel = new SpellTreeViewModel(character.getSpellSupport().getKnownSpellNodes(), false); + selectedModel = new SpellTreeViewModel(character.getSpellSupport().getBookSpellNodes(), true); + } + + public void install() + { + availableTable.setTreeViewModel(availableModel); + selectedTable.setTreeViewModel(selectedModel); + } + + } + +} Modified: sandbox/uisync/code/src/java/pcgen/gui2/tabs/spells/SpellTreeViewModel.java =================================================================== --- sandbox/uisync/code/src/java/pcgen/gui2/tabs/spells/SpellTreeViewModel.java 2011-10-02 03:09:15 UTC (rev 15422) +++ sandbox/uisync/code/src/java/pcgen/gui2/tabs/spells/SpellTreeViewModel.java 2011-10-02 05:49:17 UTC (rev 15423) @@ -28,13 +28,14 @@ import pcgen.core.facade.util.ListFacade; import pcgen.gui2.util.treeview.DataView; import pcgen.gui2.util.treeview.TreeView; +import pcgen.gui2.util.treeview.TreeViewModel; import pcgen.gui2.util.treeview.TreeViewPath; /** * * @author Connor Petty <cpm...@us...> */ -public class SpellTreeViewModel +public class SpellTreeViewModel implements TreeViewModel<SpellNode> { private final SpellNodeDataView dataView; Added: sandbox/uisync/code/src/java/pcgen/gui2/tabs/spells/SpellsKnownTab.java =================================================================== --- sandbox/uisync/code/src/java/pcgen/gui2/tabs/spells/SpellsKnownTab.java (rev 0) +++ sandbox/uisync/code/src/java/pcgen/gui2/tabs/spells/SpellsKnownTab.java 2011-10-02 05:49:17 UTC (rev 15423) @@ -0,0 +1,143 @@ +/* + * SpellsKnownTab.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 19, 2011, 5:26:29 PM + */ +package pcgen.gui2.tabs.spells; + +import java.util.Hashtable; +import javax.swing.Box; +import javax.swing.JButton; +import javax.swing.JCheckBox; +import javax.swing.JScrollPane; +import javax.swing.JTextField; +import pcgen.core.facade.CharacterFacade; +import pcgen.gui2.tabs.CharacterInfoTab; +import pcgen.gui2.tabs.TabTitle; +import pcgen.gui2.tools.FlippingSplitPane; +import pcgen.gui2.tools.Icons; +import pcgen.gui2.tools.InfoPane; +import pcgen.gui2.util.JTreeViewTable; + +/** + * + * @author Connor Petty <cpm...@us...> + */ +public class SpellsKnownTab extends FlippingSplitPane implements CharacterInfoTab +{ + + private final TabTitle tabTitle = new TabTitle("Known Spells"); + private final JTreeViewTable availableTable; + private final JTreeViewTable selectedTable; + private final JButton addButton; + private final JButton removeButton; + private final InfoPane spellsPane; + private final InfoPane classPane; + + public SpellsKnownTab() + { + this.availableTable = new JTreeViewTable(); + this.selectedTable = new JTreeViewTable(); + this.addButton = new JButton(); + this.removeButton = new JButton(); + this.spellsPane = new InfoPane("Spell Info"); + this.classPane = new InfoPane("Class Info"); + initComponents(); + } + + private void initComponents() + { + FlippingSplitPane upperPane = new FlippingSplitPane(); + Box box = Box.createVerticalBox(); + box.add(new JScrollPane(availableTable)); + JCheckBox checkBox = new JCheckBox("Add auto known spells on level/load"); + checkBox.setAlignmentX(0); + box.add(checkBox); + { + Box hbox = Box.createHorizontalBox(); + checkBox = new JCheckBox("Allow Use of Higher Level Slots"); + hbox.add(checkBox); + hbox.add(Box.createHorizontalGlue()); + hbox.add(addButton); + box.add(hbox); + } + upperPane.setLeftComponent(box); + + box = Box.createVerticalBox(); + box.add(new JScrollPane(selectedTable)); + { + Box hbox = Box.createHorizontalBox(); + hbox.add(removeButton); + hbox.add(new JButton("Select Spellsheet")); + hbox.add(new JTextField()); + hbox.add(new JButton(Icons.PrintPreview16.getImageIcon())); + hbox.add(new JButton(Icons.Print16.getImageIcon())); + box.add(hbox); + } + upperPane.setRightComponent(box); + setTopComponent(upperPane); + + FlippingSplitPane bottomPane = new FlippingSplitPane(); + bottomPane.setLeftComponent(spellsPane); + bottomPane.setRightComponent(classPane); + setBottomComponent(bottomPane); + setOrientation(VERTICAL_SPLIT); + } + + public Hashtable<Object, Object> createModels(CharacterFacade character) + { + Hashtable<Object, Object> state = new Hashtable<Object, Object>(); + state.put(TreeViewModelHandler.class, new TreeViewModelHandler(character)); + return state; + } + + public void restoreModels(Hashtable<?, ?> state) + { + ((TreeViewModelHandler) state.get(TreeViewModelHandler.class)).install(); + } + + public void storeModels(Hashtable<Object, Object> state) + { + } + + public TabTitle getTabTitle() + { + return tabTitle; + } + + private class TreeViewModelHandler + { + + private SpellTreeViewModel availableModel; + private SpellTreeViewModel selectedModel; + + public TreeViewModelHandler(CharacterFacade character) + { + availableModel = new SpellTreeViewModel(character.getSpellSupport().getAvailableSpellNodes(), false); + selectedModel = new SpellTreeViewModel(character.getSpellSupport().getAllKnownSpellNodes(), true); + } + + public void install() + { + availableTable.setTreeViewModel(availableModel); + selectedTable.setTreeViewModel(selectedModel); + } + + } + +} Added: sandbox/uisync/code/src/java/pcgen/gui2/tabs/spells/SpellsPreparedTab.java =================================================================== --- sandbox/uisync/code/src/java/pcgen/gui2/tabs/spells/SpellsPreparedTab.java (rev 0) +++ sandbox/uisync/code/src/java/pcgen/gui2/tabs/spells/SpellsPreparedTab.java 2011-10-02 05:49:17 UTC (rev 15423) @@ -0,0 +1,142 @@ +/* + * SpellsPreparedTab.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 Oct 1, 2011, 10:09:27 PM + */ +package pcgen.gui2.tabs.spells; + +import java.util.Hashtable; +import javax.swing.Box; +import javax.swing.JButton; +import javax.swing.JCheckBox; +import javax.swing.JLabel; +import javax.swing.JScrollPane; +import javax.swing.JTextField; +import pcgen.core.facade.CharacterFacade; +import pcgen.gui2.tabs.TabTitle; +import pcgen.gui2.tools.FlippingSplitPane; +import pcgen.gui2.tools.InfoPane; +import pcgen.gui2.util.JTreeViewTable; + +/** + * + * @author Connor Petty <cpm...@us...> + */ +public class SpellsPreparedTab extends FlippingSplitPane +{ + + private final TabTitle tabTitle = new TabTitle("Prepared Spells"); + private final JTreeViewTable availableTable; + private final JTreeViewTable selectedTable; + private final JButton addButton; + private final JButton removeButton; + private final InfoPane spellsPane; + private final InfoPane classPane; + + public SpellsPreparedTab() + { + this.availableTable = new JTreeViewTable(); + this.selectedTable = new JTreeViewTable(); + this.addButton = new JButton(); + this.removeButton = new JButton(); + this.spellsPane = new InfoPane("Spell Info"); + this.classPane = new InfoPane("Class Info"); + initComponents(); + } + + private void initComponents() + { + FlippingSplitPane upperPane = new FlippingSplitPane(); + Box box = Box.createVerticalBox(); + box.add(new JScrollPane(availableTable)); + JCheckBox checkBox = new JCheckBox("Allow Use of Higher Level Slots"); + checkBox.setAlignmentX(0); + box.add(checkBox); + { + Box hbox = Box.createHorizontalBox(); + + hbox.add(new JButton("Add Spell with Metamagic Feats")); + hbox.add(Box.createHorizontalGlue()); + hbox.add(addButton); + box.add(hbox); + } + upperPane.setLeftComponent(box); + + box = Box.createVerticalBox(); + box.add(new JScrollPane(selectedTable)); + { + Box hbox = Box.createHorizontalBox(); + hbox.add(removeButton); + hbox.add(new JLabel("Spell List:")); + hbox.add(new JTextField()); + hbox.add(new JButton("Add")); + hbox.add(new JButton("Del")); + box.add(hbox); + } + upperPane.setRightComponent(box); + setTopComponent(upperPane); + + FlippingSplitPane bottomPane = new FlippingSplitPane(); + bottomPane.setLeftComponent(spellsPane); + bottomPane.setRightComponent(classPane); + setBottomComponent(bottomPane); + setOrientation(VERTICAL_SPLIT); + } + + public Hashtable<Object, Object> createModels(CharacterFacade character) + { + Hashtable<Object, Object> state = new Hashtable<Object, Object>(); + state.put(TreeViewModelHandler.class, new TreeViewModelHandler(character)); + return state; + } + + public void restoreModels(Hashtable<?, ?> state) + { + ((TreeViewModelHandler) state.get(TreeViewModelHandler.class)).install(); + } + + public void storeModels(Hashtable<Object, Object> state) + { + } + + public TabTitle getTabTitle() + { + return tabTitle; + } + + private class TreeViewModelHandler + { + + private SpellTreeViewModel availableModel; + private SpellTreeViewModel selectedModel; + + public TreeViewModelHandler(CharacterFacade character) + { + availableModel = new SpellTreeViewModel(character.getSpellSupport().getKnownSpellNodes(), false); + selectedModel = new SpellTreeViewModel(character.getSpellSupport().getPreparedSpellNodes(), true); + } + + public void install() + { + availableTable.setTreeViewModel(availableModel); + selectedTable.setTreeViewModel(selectedModel); + } + + } + +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |