package net.sf.colossus.gui; import java.awt.Dimension; import java.awt.GridLayout; import javax.swing.JEditorPane; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.ScrollPaneConstants; import javax.swing.text.Document; import net.sf.colossus.guiutil.KFrame; import net.sf.colossus.util.StaticResourceLoader; import net.sf.colossus.variant.Variant; /** * Provides a JScrollPane to display the Variant README, * either within GetPlayer selection tab, * or from main boards help (then in own KFrame). * * @author Clemens Katzer */ public final class ShowReadme extends KFrame { private JEditorPane myReadme; ShowReadme(Variant variant) { super("ShowReadme"); String variantName = variant.getName(); Document doc = variant.getReadme(); String title = "README for variant " + variantName; setTitle(title); // KFrame does the registration: net.sf.colossus.util.InstanceTracker.setId(this, title); myReadme = new JEditorPane(); JScrollPane content = readmeContentScrollPane(myReadme, doc); getContentPane().add(content); pack(); setVisible(true); } @Override public void dispose() { if (myReadme != null) { myReadme.getParent().remove(myReadme); myReadme = null; } super.dispose(); } /** * Return a scrollable pane that displays the Readme. * Also used by GetPlayer.java */ public static final JScrollPane readmeContentScrollPane( JEditorPane readme, Document doc) { JPanel readmePane = new JPanel(); JScrollPane readmeScrollPane = new JScrollPane(readmePane, ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED); readmePane.setLayout(new GridLayout(0, 1)); readme.setEditable(false); // Must be tall enough for biggest variant readme file. // TODO: proper resizing according to need? Dimension readmeMaxSize = new Dimension(580, 2200); Dimension readmePrefSize = new Dimension(580, 2200); Dimension readmeScrollMaxSize = new Dimension(600, 2200); Dimension readmeScrollPrefSize = new Dimension(600, 500); readmePane.setMaximumSize(readmeMaxSize); readmePane.setPreferredSize(readmePrefSize); readmeScrollPane.setMaximumSize(readmeScrollMaxSize); readmeScrollPane.setPreferredSize(readmeScrollPrefSize); readmePane.add(readme); readme.setContentType((String)doc .getProperty(StaticResourceLoader.KEY_CONTENT_TYPE)); readme.setDocument(doc); return readmeScrollPane; } }