From: <sou...@us...> - 2006-03-26 00:06:04
|
Revision: 449 Author: soulcatcher Date: 2006-03-25 16:05:38 -0800 (Sat, 25 Mar 2006) ViewCVS: http://svn.sourceforge.net/pcgen/?rev=449&view=rev Log Message: ----------- adding the rest of teh sponsor code Modified Paths: -------------- Trunk/pcgen/code/pluginbuild.xml Trunk/pcgen/code/src/java/pcgen/core/Globals.java Trunk/pcgen/code/src/java/pcgen/core/SettingsHandler.java Trunk/pcgen/code/src/java/pcgen/gui/MainAbout.java Trunk/pcgen/code/src/java/pcgen/gui/MainSource.java Trunk/pcgen/code/src/java/pcgen/gui/PCGen_Frame1.java Trunk/pcgen/code/src/java/pcgen/gui/PreferencesDialog.java Trunk/pcgen/code/src/java/pcgen/gui/pcGenGUI.java Trunk/pcgen/code/src/java/pcgen/gui/prop/LanguageBundle.properties Trunk/pcgen/code/src/java/pcgen/persistence/lst/LstSystemLoader.java Trunk/pcgen/code/src/java/pcgen/persistence/lst/TokenStore.java Added Paths: ----------- Trunk/pcgen/code/src/java/pcgen/persistence/lst/SponsorLoader.java Trunk/pcgen/code/src/java/pcgen/persistence/lst/SponsorLstToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/sponsor/ Trunk/pcgen/code/src/java/plugin/lsttokens/sponsor/ImagebannerToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/sponsor/ImagelargeToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/sponsor/ImagesmallToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/sponsor/NameToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/sponsor/SponsorToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/sponsor/TextToken.java Modified: Trunk/pcgen/code/pluginbuild.xml =================================================================== --- Trunk/pcgen/code/pluginbuild.xml 2006-03-26 00:00:46 UTC (rev 448) +++ Trunk/pcgen/code/pluginbuild.xml 2006-03-26 00:05:38 UTC (rev 449) @@ -5622,6 +5622,49 @@ </patternset> </fileset> </jar> + <!-- Sponsor tokens--> + <jar jarfile="${systemlstplugins.dir}/Sponsor-IMAGEBANNER.jar" manifest="${src.java.dir}/plugin/lsttokens/manifest.mf"> + <fileset dir="${build.classes.dir}"> + <patternset> + <include name="plugin/lsttokens/sponsor/ImagebannerToken.class" /> + </patternset> + </fileset> + </jar> + <jar jarfile="${systemlstplugins.dir}/Sponsor-IMAGELARGE.jar" manifest="${src.java.dir}/plugin/lsttokens/manifest.mf"> + <fileset dir="${build.classes.dir}"> + <patternset> + <include name="plugin/lsttokens/sponsor/ImagelargeToken.class" /> + </patternset> + </fileset> + </jar> + <jar jarfile="${systemlstplugins.dir}/Sponsor-IMAGESMALL.jar" manifest="${src.java.dir}/plugin/lsttokens/manifest.mf"> + <fileset dir="${build.classes.dir}"> + <patternset> + <include name="plugin/lsttokens/sponsor/ImagesmallToken.class" /> + </patternset> + </fileset> + </jar> + <jar jarfile="${systemlstplugins.dir}/Sponsor-NAME.jar" manifest="${src.java.dir}/plugin/lsttokens/manifest.mf"> + <fileset dir="${build.classes.dir}"> + <patternset> + <include name="plugin/lsttokens/sponsor/NameToken.class" /> + </patternset> + </fileset> + </jar> + <jar jarfile="${systemlstplugins.dir}/Sponsor-SPONSOR.jar" manifest="${src.java.dir}/plugin/lsttokens/manifest.mf"> + <fileset dir="${build.classes.dir}"> + <patternset> + <include name="plugin/lsttokens/sponsor/SponsorToken.class" /> + </patternset> + </fileset> + </jar> + <jar jarfile="${systemlstplugins.dir}/Sponsor-TEXT.jar" manifest="${src.java.dir}/plugin/lsttokens/manifest.mf"> + <fileset dir="${build.classes.dir}"> + <patternset> + <include name="plugin/lsttokens/sponsor/TextToken.class" /> + </patternset> + </fileset> + </jar> </target> <target name="jar-deprecated-plugin" depends="manifest" description="Build (Link) plugin jar files"> Modified: Trunk/pcgen/code/src/java/pcgen/core/Globals.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/Globals.java 2006-03-26 00:00:46 UTC (rev 448) +++ Trunk/pcgen/code/src/java/pcgen/core/Globals.java 2006-03-26 00:05:38 UTC (rev 449) @@ -115,6 +115,9 @@ private static List templateList = new ArrayList(350); private static DenominationList denomList = DenominationList.getInstance(); // derived from ArrayList private static SortedSet saSet = new TreeSet(); + + private static Map sponsors = new HashMap(); + private static List sponsorList = new ArrayList(); /** Weapon proficiency Data storage */ private static final WeaponProfDataStore weaponProfs = new WeaponProfDataStore(); @@ -4082,4 +4085,17 @@ return path; } + + public static void addSponsor(Map sponsor) { + sponsors.put(sponsor.get("SPONSOR"), sponsor); + sponsorList.add(sponsor); + } + + public static List getSponsors() { + return sponsorList; + } + + public static Map getSponsor(String name) { + return (Map)sponsors.get(name); + } } Modified: Trunk/pcgen/code/src/java/pcgen/core/SettingsHandler.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/SettingsHandler.java 2006-03-26 00:00:46 UTC (rev 448) +++ Trunk/pcgen/code/src/java/pcgen/core/SettingsHandler.java 2006-03-26 00:05:38 UTC (rev 449) @@ -100,6 +100,7 @@ private static boolean showD20InfoAtStart = true; private static boolean loadURLs = false; private static boolean showOGLOnLoad = true; + private static boolean showSponsorsOnLoad = true; private static boolean hpMaxAtFirstLevel = true; private static int hpRollMethod = Constants.HP_STANDARD; private static int hpPct = 100; @@ -140,6 +141,7 @@ private static File pcgenCustomDir = new File(Globals.getDefaultPath() + File.separator + "data" + File.separator //$NON-NLS-1$ + "customsources"); //$NON-NLS-1$ private static File pcgenVendorDataDir = new File(Globals.getDefaultPath() + File.separator + "vendordata"); //$NON-NLS-1$ + private static File pcgenSponsorDir = new File(Globals.getDefaultPath() + File.separator + "system" + File.separator + "sponsors"); //$NON-NLS-1$ private static File pcgenDocsDir = null; /** @@ -1109,6 +1111,7 @@ loadURLs = getPCGenOption("loadURLs", false); //$NON-NLS-1$ allowOverride = getPCGenOption("allowOverride", false); //$NON-NLS-1$ showOGLOnLoad = getPCGenOption("showOGLOnLoad", true); //$NON-NLS-1$ + showSponsorsOnLoad = getPCGenOption("showSponsorsOnLoad", true); //$NON-NLS-1$ Globals.setSourceDisplay(getPCGenOption("sourceDisplay", Constants.SOURCELONG)); //$NON-NLS-1$ Globals.setLanguage(getPCGenOption("language", null)); //$NON-NLS-1$ //$NON-NLS-2$ @@ -1547,6 +1550,7 @@ setPCGenOption("showImagePreview", isShowImagePreview()); //$NON-NLS-1$ setPCGenOption("showNatWeaponTab", showNatWeaponTab); //$NON-NLS-1$ setPCGenOption("showOGLOnLoad", showOGLOnLoad); //$NON-NLS-1$ + setPCGenOption("showSponsorsOnLoad", showSponsorsOnLoad); //$NON-NLS-1$ setPCGenOption("showStatDialogAtLevelUp", getShowStatDialogAtLevelUp()); //$NON-NLS-1$ setPCGenOption("showTipOfTheDay", getShowTipOfTheDay()); //$NON-NLS-1$ setPCGenOption("showToolBar", isShowToolBar()); //$NON-NLS-1$ @@ -1662,6 +1666,16 @@ return pcgenVendorDataDir; } + public static void setPcgenSponsorDir(final File aFile) + { + pcgenSponsorDir = aFile; + } + + public static File getPcgenSponsorDir() + { + return pcgenSponsorDir; + } + public static void setPcgenDocsDir(final File argPcgenDocsDir) { pcgenDocsDir = argPcgenDocsDir; @@ -2121,6 +2135,11 @@ showOGLOnLoad = arg; } + public static void setShowSponsors(final boolean arg) + { + showSponsorsOnLoad = arg; + } + /** * Sets whether the Stat dialog should be shown at level up. * @param argShowStatDialogAtLevelUp Should the Stat dialog should be shown at level up? @@ -2460,6 +2479,10 @@ return showOGLOnLoad; } + public static boolean showSponsors() { + return showSponsorsOnLoad; + } + public static boolean showNaturalWeaponTab() { return showNatWeaponTab; Modified: Trunk/pcgen/code/src/java/pcgen/gui/MainAbout.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui/MainAbout.java 2006-03-26 00:00:46 UTC (rev 448) +++ Trunk/pcgen/code/src/java/pcgen/gui/MainAbout.java 2006-03-26 00:05:38 UTC (rev 449) @@ -25,8 +25,11 @@ */ package pcgen.gui; +import pcgen.core.Globals; import pcgen.gui.utils.BrowserLauncher; import pcgen.gui.utils.IconUtilitities; +import pcgen.gui.utils.JLabelPane; +import pcgen.persistence.lst.SponsorLoader; import pcgen.util.Logging; import pcgen.util.PropertyFactory; @@ -34,7 +37,10 @@ import javax.swing.*; import javax.swing.border.BevelBorder; +import javax.swing.border.Border; import javax.swing.border.EmptyBorder; +import javax.swing.border.TitledBorder; + import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; @@ -42,6 +48,8 @@ import java.io.InputStream; import java.io.InputStreamReader; import java.net.URL; +import java.util.List; +import java.util.Map; /** * Create a simple panel to identify the program and those who contributed @@ -89,6 +97,7 @@ mainPane.add(PropertyFactory.getString("in_abt_libraries"), buildIncludesPanel()); //$NON-NLS-1$ mainPane.add(PropertyFactory.getString("in_abt_license"), buildLicensePanel()); //$NON-NLS-1$ mainPane.add(PropertyFactory.getString("in_abt_awards"), buildAwardsPanel()); //$NON-NLS-1$ + mainPane.add(PropertyFactory.getString("in_abt_sponsors"), buildSponsorsPanel()); //$NON-NLS-1$ setLayout(new BorderLayout()); @@ -364,6 +373,37 @@ return panel; } + private JPanel buildSponsorsPanel() + { + Border etched = null; + TitledBorder title = BorderFactory.createTitledBorder(etched, "Sponsor Info"); + title.setTitleJustification(TitledBorder.CENTER); + JLabelPane sponsorLabel = new JLabelPane(); + JScrollPane sp = new JScrollPane(sponsorLabel); + sp.setBorder(title); + JPanel panel = new JPanel(new BorderLayout()); + sponsorLabel.setBackground(panel.getBackground()); + panel.add(BorderLayout.CENTER, sp); + + List sponsors = Globals.getSponsors(); + StringBuffer sb = new StringBuffer(); + sb.append("<html><b>Our Sponsors</b><br>"); + for(int i = 0; i < sponsors.size(); i++) { + Map sponsor = (Map)sponsors.get(i); + if(sponsor.get("SPONSOR").equals("PCGEN")) { + continue; + } + + sb.append("<img src='") + .append(SponsorLoader.getConvertedSponsorPath((String)sponsor.get("IMAGEBANNER"))) + .append("'><br>"); + } + sb.append("</html>"); + sponsorLabel.setText(sb.toString()); + return panel; + } + + /** * Construct the license panel. This panel shows the full * text of the license under which PCGen is distributed. Modified: Trunk/pcgen/code/src/java/pcgen/gui/MainSource.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui/MainSource.java 2006-03-26 00:00:46 UTC (rev 448) +++ Trunk/pcgen/code/src/java/pcgen/gui/MainSource.java 2006-03-26 00:05:38 UTC (rev 449) @@ -44,6 +44,7 @@ import java.util.Collections; import java.util.Iterator; import java.util.List; +import java.util.Map; import javax.swing.BorderFactory; import javax.swing.DefaultListSelectionModel; @@ -92,6 +93,7 @@ import pcgen.persistence.PersistenceLayerException; import pcgen.persistence.PersistenceManager; import pcgen.persistence.lst.CampaignSourceEntry; +import pcgen.persistence.lst.SponsorLoader; import pcgen.util.Logging; import pcgen.util.PropertyFactory; import pcgen.util.SwingWorker; @@ -387,12 +389,18 @@ path = pathNode.getItem().toString() + "." + path; } - StringBuffer b = new StringBuffer(); + StringBuffer sb = new StringBuffer(); // enclose the node-path name with the <p> tag so that we can parse for it later - b.append("<html><b>").append(path).append("</b><br>"); - b.append("</html>"); - infoLabel.setText(b.toString()); + sb.append("<html><b>").append(path).append("</b><br>"); + if(Globals.getSponsor(path) != null) { + Map sponsor = Globals.getSponsor(path); + sb.append("<img src='") + .append(SponsorLoader.getConvertedSponsorPath((String)sponsor.get("IMAGELARGE"))) + .append("'><br>"); + } + sb.append("</html>"); + infoLabel.setText(sb.toString()); } } } Modified: Trunk/pcgen/code/src/java/pcgen/gui/PCGen_Frame1.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui/PCGen_Frame1.java 2006-03-26 00:00:46 UTC (rev 448) +++ Trunk/pcgen/code/src/java/pcgen/gui/PCGen_Frame1.java 2006-03-26 00:05:38 UTC (rev 449) @@ -2792,6 +2792,16 @@ }, "help.ogl", null, null, true); helpMenu.add(oglItem); + JMenuItem sponsorItem = Utility.createMenuItem("mnuHelpSponsors", + new ActionListener() + { + public void actionPerformed(ActionEvent e) + { + pcGenGUI.showSponsors(); + } + }, "help.sponsors", null, null, true); + helpMenu.add(sponsorItem); + /* JMenuItem d20Item = CoreUtility.createMenuItem("mnuHelpD20", new ActionListener() { public void actionPerformed(ActionEvent e) Modified: Trunk/pcgen/code/src/java/pcgen/gui/PreferencesDialog.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui/PreferencesDialog.java 2006-03-26 00:00:46 UTC (rev 448) +++ Trunk/pcgen/code/src/java/pcgen/gui/PreferencesDialog.java 2006-03-26 00:05:38 UTC (rev 449) @@ -129,6 +129,7 @@ private static String in_cmSelectExit = PropertyFactory.getString("in_Prefs_cmSelectExit"); private static String in_displayOGL = PropertyFactory.getString("in_Prefs_displayOGL"); private static String in_displayd20 = PropertyFactory.getString("in_Prefs_displayd20"); + private static String in_displaySponsors = PropertyFactory.getString("in_Prefs_displaySponsors"); private static String in_dialogTitle = PropertyFactory.getString("in_Prefs_title"); private static String in_displayOpts = PropertyFactory.getString("in_Prefs_displayOpts"); private static String in_expertGUI = PropertyFactory.getString("in_Prefs_expertGUI"); @@ -265,6 +266,7 @@ private JCheckBox showToolbar = new JCheckBox(); private JCheckBox showWarningAtFirstLevelUp = new JCheckBox(); private JCheckBox showd20 = new JCheckBox(); + private JCheckBox showSponsors = new JCheckBox(); private JCheckBox statDialogShownAtLevelUp = new JCheckBox(); private JCheckBox showSkillModifier = new JCheckBox(); private JCheckBox enforceSpendingBeforeLevelUp = new JCheckBox(); @@ -871,6 +873,7 @@ SettingsHandler.setSaveCustomEquipment(saveCustom.isSelected()); SettingsHandler.setShowLicense(showOGL.isSelected()); SettingsHandler.setShowD20Info(showd20.isSelected()); + SettingsHandler.setShowSponsors(showSponsors.isSelected()); SettingsHandler.setLoadURLs(loadURL.isSelected()); SettingsHandler.setAllowOverride(allowOverride.isSelected()); @@ -1268,6 +1271,7 @@ saveCustom.setSelected(SettingsHandler.getSaveCustomEquipment()); showOGL.setSelected(SettingsHandler.showLicense()); showd20.setSelected(SettingsHandler.showD20Info()); + showSponsors.setSelected(SettingsHandler.showSponsors()); loadURL.setSelected(SettingsHandler.isLoadURLs()); allowOverride.setSelected(SettingsHandler.isAllowOverride()); @@ -2982,19 +2986,27 @@ sourcesPanel.add(showd20); Utility.buildConstraints(c, 0, 6, 3, 1, 0, 0); + label = new JLabel(in_displaySponsors + ": "); + gridbag.setConstraints(label, c); + sourcesPanel.add(label); + Utility.buildConstraints(c, 3, 6, 1, 1, 0, 0); + gridbag.setConstraints(showSponsors, c); + sourcesPanel.add(showSponsors); + + Utility.buildConstraints(c, 0, 7, 3, 1, 0, 0); label = new JLabel(in_sourceDisplay + ": "); gridbag.setConstraints(label, c); sourcesPanel.add(label); - Utility.buildConstraints(c, 3, 6, 1, 1, 0, 0); + Utility.buildConstraints(c, 3, 7, 1, 1, 0, 0); sourceOptions = new JComboBoxEx(new String[]{ in_sdLong, in_sdMedium, in_sdShort, in_sdPage, in_sdWeb }); gridbag.setConstraints(sourceOptions, c); sourcesPanel.add(sourceOptions); - Utility.buildConstraints(c, 0, 7, 3, 1, 0, 0); + Utility.buildConstraints(c, 0, 8, 3, 1, 0, 0); label = new JLabel(in_loadURLs + ": "); gridbag.setConstraints(label, c); sourcesPanel.add(label); - Utility.buildConstraints(c, 3, 7, 1, 1, 0, 0); + Utility.buildConstraints(c, 3, 8, 1, 1, 0, 0); gridbag.setConstraints(loadURL, c); sourcesPanel.add(loadURL); loadURL.addActionListener(new ActionListener() @@ -3009,11 +3021,11 @@ } }); - Utility.buildConstraints(c, 0, 8, 3, 1, 0, 0); + Utility.buildConstraints(c, 0, 9, 3, 1, 0, 0); label = new JLabel(in_allowOverride + ": "); gridbag.setConstraints(label, c); sourcesPanel.add(label); - Utility.buildConstraints(c, 3, 8, 1, 1, 0, 0); + Utility.buildConstraints(c, 3, 9, 1, 1, 0, 0); gridbag.setConstraints(allowOverride, c); sourcesPanel.add(allowOverride); Modified: Trunk/pcgen/code/src/java/pcgen/gui/pcGenGUI.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui/pcGenGUI.java 2006-03-26 00:00:46 UTC (rev 448) +++ Trunk/pcgen/code/src/java/pcgen/gui/pcGenGUI.java 2006-03-26 00:05:38 UTC (rev 449) @@ -21,6 +21,42 @@ package pcgen.gui; import gmgen.pluginmgr.PluginLoader; + +import java.awt.BorderLayout; +import java.awt.Dimension; +import java.awt.Frame; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.ItemEvent; +import java.awt.event.ItemListener; +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.OutputStreamWriter; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Observer; + +import javax.swing.ButtonGroup; +import javax.swing.ImageIcon; +import javax.swing.JButton; +import javax.swing.JCheckBox; +import javax.swing.JEditorPane; +import javax.swing.JFileChooser; +import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.JOptionPane; +import javax.swing.JPanel; +import javax.swing.JRadioButton; +import javax.swing.JScrollPane; +import javax.swing.JTextField; +import javax.swing.UIManager; + import pcgen.core.Constants; import pcgen.core.Globals; import pcgen.core.PlayerCharacter; @@ -30,26 +66,20 @@ import pcgen.core.utils.MessageWrapper; import pcgen.core.utils.ShowMessageConsoleObserver; import pcgen.core.utils.ShowMessageDelegate; -import pcgen.gui.utils.*; +import pcgen.gui.utils.DialogInputInterface; +import pcgen.gui.utils.Hyperactive; +import pcgen.gui.utils.IconUtilitities; +import pcgen.gui.utils.ShowMessageGuiObserver; +import pcgen.gui.utils.SwingChooser; +import pcgen.gui.utils.SwingChooserRadio; +import pcgen.gui.utils.Utility; import pcgen.io.ExportHandler; import pcgen.io.PCGFile; +import pcgen.persistence.lst.SponsorLoader; import pcgen.util.InputFactory; import pcgen.util.Logging; import pcgen.util.chooser.ChooserFactory; -import javax.swing.*; -import java.awt.BorderLayout; -import java.awt.Dimension; -import java.awt.Frame; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.awt.event.ItemEvent; -import java.awt.event.ItemListener; -import java.io.*; -import java.util.Iterator; -import java.util.List; -import java.util.Observer; - /** * <code>pcGenGUI</code> is the Main-Class for the application. * It creates an unreferenced copy of itself, basically so that @@ -518,6 +548,73 @@ aFrame.setVisible(true); } + public static void showSponsors() + { + String title = "PCGen's sponsors"; + + final JFrame aFrame = new JFrame(title); + final JButton jClose = new JButton("Close"); + final JPanel jPanel = new JPanel(); + final JCheckBox jCheckBox = new JCheckBox("Show on source load"); + jPanel.add(jCheckBox); + jCheckBox.setSelected(SettingsHandler.showSponsors()); + jCheckBox.addItemListener(new ItemListener() + { + public void itemStateChanged(ItemEvent evt) + { + SettingsHandler.setShowSponsors(jCheckBox.isSelected()); + } + }); + jPanel.add(jClose); + jClose.addActionListener(new ActionListener() + { + public void actionPerformed(ActionEvent evt) + { + aFrame.dispose(); + } + }); + IconUtilitities.maybeSetIcon(aFrame, "PcgenIcon.gif"); + + StringBuffer sb = new StringBuffer(); + sb.append("<html>"); + sb.append("<img src='") + .append(SponsorLoader.getConvertedSponsorPath((String)Globals.getSponsor("PCGEN").get("IMAGEBANNER"))) + .append("'><br>"); + + String s = ""; + if(Globals.getSponsors().size() > 2) { + s = "s"; + } + sb.append("<H2><CENTER>Would like to thank our official sponsor") + .append(s) + .append(":</CENTER></h2>"); + List sponsors = Globals.getSponsors(); + int size = 172; + for(int i = 0; i < sponsors.size(); i++) { + Map sponsor = (Map)sponsors.get(i); + if(sponsor.get("SPONSOR").equals("PCGEN")) { + continue; + } + + size += 70; + sb.append("<img src='") + .append(SponsorLoader.getConvertedSponsorPath((String)sponsor.get("IMAGEBANNER"))) + .append("'><br>"); + } + sb.append("</html>"); + final JEditorPane a = new JEditorPane("text/html", sb.toString()); + a.setEditable(false); + + final JScrollPane aPane = new JScrollPane(); + aPane.setViewportView(a); + aFrame.getContentPane().setLayout(new BorderLayout()); + aFrame.getContentPane().add(aPane, BorderLayout.CENTER); + aFrame.getContentPane().add(jPanel, BorderLayout.SOUTH); + aFrame.setSize(new Dimension(505, size)); + Utility.centerFrame(aFrame, false); + aFrame.setVisible(true); + } + public static void showMandatoryD20Info() { final ImageIcon imgIcon = IconUtilitities.getImageIcon("D20_logo_RGB.jpg"); Modified: Trunk/pcgen/code/src/java/pcgen/gui/prop/LanguageBundle.properties =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui/prop/LanguageBundle.properties 2006-03-26 00:00:46 UTC (rev 448) +++ Trunk/pcgen/code/src/java/pcgen/gui/prop/LanguageBundle.properties 2006-03-26 00:05:38 UTC (rev 449) @@ -643,6 +643,8 @@ in_abt_awards=Awards +in_abt_sponsors=Sponsors + in_abt_awards_2005_ennie=2005 Gold ENnie winner for 'Best Electronic Product'. in_abt_awards_2003_ennie=2003 ENnie nominee for 'Best Resource Fan Site'. @@ -2430,6 +2432,8 @@ in_Prefs_displayd20=Display d20 Required Information on Source Load +in_Prefs_displaySponsors=Display Sponsors on Source Load + in_Prefs_loadURLs=Allow sources to be loaded from web links in_Prefs_allowOverride=Allow newer sources to override duplicate object from older sources Modified: Trunk/pcgen/code/src/java/pcgen/persistence/lst/LstSystemLoader.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/persistence/lst/LstSystemLoader.java 2006-03-26 00:00:46 UTC (rev 448) +++ Trunk/pcgen/code/src/java/pcgen/persistence/lst/LstSystemLoader.java 2006-03-26 00:05:38 UTC (rev 449) @@ -65,7 +65,6 @@ import pcgen.core.PCTemplate; import pcgen.core.PObject; import pcgen.core.PlayerCharacter; -import pcgen.core.Race; import pcgen.core.SettingsHandler; import pcgen.core.Skill; import pcgen.core.SourceUtilities; @@ -228,6 +227,7 @@ private PCClassLoader classLoader = new PCClassLoader(); private PaperInfoLoader paperLoader = new PaperInfoLoader(); private PointBuyLoader pointBuyLoader = new PointBuyLoader(); + private SponsorLoader sponsorLoader = new SponsorLoader(); private RaceLoader raceLoader = new RaceLoader(); private final Set sourcesSet = new TreeSet(); private BioSet bioSet = new BioSet(); @@ -272,6 +272,7 @@ classLoader.addObserver(this); paperLoader.addObserver(this); pointBuyLoader.addObserver(this); + sponsorLoader.addObserver(this); raceLoader.addObserver(this); sizeLoader.addObserver(this); skillLoader.addObserver(this); @@ -336,7 +337,8 @@ public void initialize() throws PersistenceLayerException { loadGameModes(); - + loadSponsorsLstFile(); + // Load the initial campaigns loadPCCFilesInDirectory(SettingsHandler.getPccFilesLocation().getAbsolutePath()); loadPCCFilesInDirectory(SettingsHandler.getPcgenVendorDataDir().getAbsolutePath()); @@ -348,6 +350,30 @@ } /** + * Load a game mode file. + * First try the game mode directory. If that fails, try + * reading the file from the default game mode directory. + * @param lstFileLoader the Loader object for the type of file. + * @param gameModeName the game mode + * @param lstFileName the lst file to load + * @param showMissing show the missing file as a warning. Some files are optional and shouldn't generate a warning + */ + private void loadSponsorsLstFile() + { + final String systemPrefix = SettingsHandler.getPcgenSystemDir() + File.separator; + final String sponsorDirectory = systemPrefix + "sponsors" + File.separator; + + try + { + sponsorLoader.loadLstFile(sponsorDirectory + "sponsors.lst", null); + } + catch (PersistenceLayerException ple) + { + Logging.errorPrint("Warning: sponsors file is missing"); + } + } + + /** * @see pcgen.persistence.SystemLoader#loadCampaigns(List) */ public void loadCampaigns(final List aSelectedCampaignsList) @@ -475,6 +501,7 @@ PObjectLoader.finishFeatProcessing(); // Show the licenses showLicensesIfNeeded(); + showSponsorsIfNeeded(); } finally { @@ -2055,7 +2082,6 @@ } } } - } private void loadGameModes() @@ -2467,6 +2493,18 @@ showD20 = false; showLicensed = false; } + + private void showSponsorsIfNeeded() + { + // Only worry about it if we're using the GUI + if (Globals.getUseGUI()) + { + if (SettingsHandler.showSponsors()) + { + pcGenGUI.showSponsors(); + } + } + } /** * This method sorts the provided listof Campaign objects by rank. Added: Trunk/pcgen/code/src/java/pcgen/persistence/lst/SponsorLoader.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/persistence/lst/SponsorLoader.java (rev 0) +++ Trunk/pcgen/code/src/java/pcgen/persistence/lst/SponsorLoader.java 2006-03-26 00:05:38 UTC (rev 449) @@ -0,0 +1,86 @@ +package pcgen.persistence.lst; + +import java.io.File; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.HashMap; +import java.util.Map; +import java.util.StringTokenizer; + +import pcgen.core.Globals; +import pcgen.core.SettingsHandler; +import pcgen.core.utils.CoreUtility; +import pcgen.persistence.PersistenceLayerException; +import pcgen.persistence.SystemLoader; +import pcgen.util.Logging; + +/** + * This class loads in and parses the BASEDICE tag + */ +public class SponsorLoader extends LstLineFileLoader { + + /** Constructor */ + public SponsorLoader() { + } + + /** + * Parses a line + * @param gameMode + * @param lstLine + * @throws PersistenceLayerException + */ + public void parseLine(String lstLine, URL sourceURL) throws PersistenceLayerException { + StringTokenizer colToken = new StringTokenizer(lstLine, SystemLoader.TAB_DELIM); + Map sponsor = new HashMap(); + + Map tokenMap = TokenStore.inst().getTokenMap(SponsorLstToken.class); + while (colToken.hasMoreTokens()) { + final String colString = colToken.nextToken().trim(); + final int idxColon = colString.indexOf(':'); + String key = ""; + try { + key = colString.substring(0, idxColon); + } + catch(StringIndexOutOfBoundsException e) { + // TODO Deal with this exception + } + + SponsorLstToken token = (SponsorLstToken) tokenMap.get(key); + + if (token != null) + { + final String value = colString.substring(idxColon + 1).trim(); + LstUtils.deprecationCheck(token, "sponsors.lst", sourceURL.toString(), value); + if (!token.parse(sponsor, value)) { + Logging.errorPrint("Error parsing sponsor: from sponsors.lst "); + } + } + else { + Logging.errorPrint("Invalid sub tag " + token + " on SPONSOR line"); + throw new PersistenceLayerException("Invalid sub tag " + token + " on SPONSOR line"); + } + } + Globals.addSponsor(sponsor); + } + + public static String getConvertedSponsorPath(String file) { + String convertedPath = SettingsHandler.getPcgenSponsorDir().getAbsolutePath() + File.separator + file; + // Not a URL; make sure to fix the path syntax + convertedPath = CoreUtility.fixFilenamePath(convertedPath); + + // Make sure the path starts with a separator + if (!convertedPath.startsWith(File.separator)) + { + convertedPath = File.separator + convertedPath; + } + + // Return the final result + try + { + return new URL("file:" + convertedPath).toString(); + } + catch (MalformedURLException e) {} + return ""; + } + +} Added: Trunk/pcgen/code/src/java/pcgen/persistence/lst/SponsorLstToken.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/persistence/lst/SponsorLstToken.java (rev 0) +++ Trunk/pcgen/code/src/java/pcgen/persistence/lst/SponsorLstToken.java 2006-03-26 00:05:38 UTC (rev 449) @@ -0,0 +1,42 @@ +/* + * SponsorLstToken.java + * Copyright 2005 (C) Devon Jones <sou...@ev...> + * + * 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 September 2, 2002, 8:16 AM + * + * Current Ver: $Revision: 197 $ + * Last Editor: $Author: nuance $ + * Last Edited: $Date: 2006-03-14 15:59:43 -0700 (Tue, 14 Mar 2006) $ + * + */ +package pcgen.persistence.lst; + +import java.util.Map; + +/** + * <code>SponsorLstToken</code> + * + * @author Devon Jones <sou...@ev...> + */ +public interface SponsorLstToken extends LstToken { + /** + * @param sponsor + * @param value + * @return true if parse OK + */ + public abstract boolean parse(Map sponsor, String value); +} Modified: Trunk/pcgen/code/src/java/pcgen/persistence/lst/TokenStore.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/persistence/lst/TokenStore.java 2006-03-26 00:00:46 UTC (rev 448) +++ Trunk/pcgen/code/src/java/pcgen/persistence/lst/TokenStore.java 2006-03-26 00:05:38 UTC (rev 449) @@ -104,6 +104,9 @@ //paperinfo.lst tokenTypeList.add(PaperInfoLstToken.class); + + //sponsors.lst + tokenTypeList.add(SponsorLstToken.class); } /** Added: Trunk/pcgen/code/src/java/plugin/lsttokens/sponsor/ImagebannerToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/sponsor/ImagebannerToken.java (rev 0) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/sponsor/ImagebannerToken.java 2006-03-26 00:05:38 UTC (rev 449) @@ -0,0 +1,20 @@ +package plugin.lsttokens.sponsor; + +import java.util.Map; + +import pcgen.persistence.lst.SponsorLstToken; + +/** + * Class deals with IMAGEBANNER Token + */ +public class ImagebannerToken implements SponsorLstToken { + + public String getTokenName() { + return "IMAGEBANNER"; + } + + public boolean parse(Map sponsor, String value) { + sponsor.put("IMAGEBANNER", value); + return true; + } +} Added: Trunk/pcgen/code/src/java/plugin/lsttokens/sponsor/ImagelargeToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/sponsor/ImagelargeToken.java (rev 0) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/sponsor/ImagelargeToken.java 2006-03-26 00:05:38 UTC (rev 449) @@ -0,0 +1,20 @@ +package plugin.lsttokens.sponsor; + +import java.util.Map; + +import pcgen.persistence.lst.SponsorLstToken; + +/** + * Class deals with IMAGELARGE Token + */ +public class ImagelargeToken implements SponsorLstToken { + + public String getTokenName() { + return "IMAGELARGE"; + } + + public boolean parse(Map sponsor, String value) { + sponsor.put("IMAGELARGE", value); + return true; + } +} Added: Trunk/pcgen/code/src/java/plugin/lsttokens/sponsor/ImagesmallToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/sponsor/ImagesmallToken.java (rev 0) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/sponsor/ImagesmallToken.java 2006-03-26 00:05:38 UTC (rev 449) @@ -0,0 +1,20 @@ +package plugin.lsttokens.sponsor; + +import java.util.Map; + +import pcgen.persistence.lst.SponsorLstToken; + +/** + * Class deals with IMAGESMALL Token + */ +public class ImagesmallToken implements SponsorLstToken { + + public String getTokenName() { + return "IMAGESMALL"; + } + + public boolean parse(Map sponsor, String value) { + sponsor.put("IMAGESMALL", value); + return true; + } +} Added: Trunk/pcgen/code/src/java/plugin/lsttokens/sponsor/NameToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/sponsor/NameToken.java (rev 0) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/sponsor/NameToken.java 2006-03-26 00:05:38 UTC (rev 449) @@ -0,0 +1,20 @@ +package plugin.lsttokens.sponsor; + +import java.util.Map; + +import pcgen.persistence.lst.SponsorLstToken; + +/** + * Class deals with NAME Token + */ +public class NameToken implements SponsorLstToken { + + public String getTokenName() { + return "NAME"; + } + + public boolean parse(Map sponsor, String value) { + sponsor.put("NAME", value); + return true; + } +} Added: Trunk/pcgen/code/src/java/plugin/lsttokens/sponsor/SponsorToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/sponsor/SponsorToken.java (rev 0) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/sponsor/SponsorToken.java 2006-03-26 00:05:38 UTC (rev 449) @@ -0,0 +1,20 @@ +package plugin.lsttokens.sponsor; + +import java.util.Map; + +import pcgen.persistence.lst.SponsorLstToken; + +/** + * Class deals with SPONSOR Token + */ +public class SponsorToken implements SponsorLstToken { + + public String getTokenName() { + return "SPONSOR"; + } + + public boolean parse(Map sponsor, String value) { + sponsor.put("SPONSOR", value); + return true; + } +} Added: Trunk/pcgen/code/src/java/plugin/lsttokens/sponsor/TextToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/sponsor/TextToken.java (rev 0) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/sponsor/TextToken.java 2006-03-26 00:05:38 UTC (rev 449) @@ -0,0 +1,20 @@ +package plugin.lsttokens.sponsor; + +import java.util.Map; + +import pcgen.persistence.lst.SponsorLstToken; + +/** + * Class deals with TEXT Token + */ +public class TextToken implements SponsorLstToken { + + public String getTokenName() { + return "TEXT"; + } + + public boolean parse(Map sponsor, String value) { + sponsor.put("TEXT", value); + return true; + } +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |