| /* |
| * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved. |
| * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
| * |
| * This code is free software; you can redistribute it and/or modify it |
| * under the terms of the GNU General Public License version 2 only, as |
| * published by the Free Software Foundation. |
| * |
| * This code 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 |
| * version 2 for more details (a copy is included in the LICENSE file that |
| * accompanied this code). |
| * |
| * You should have received a copy of the GNU General Public License version |
| * 2 along with this work; if not, write to the Free Software Foundation, |
| * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
| * |
| * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
| * or visit www.oracle.com if you need additional information or have any |
| * questions. |
| */ |
| |
| import java.awt.BorderLayout; |
| import java.awt.Dimension; |
| import java.io.BufferedReader; |
| import java.io.InputStream; |
| import java.io.InputStreamReader; |
| import java.net.URL; |
| |
| import javax.swing.BoxLayout; |
| import javax.swing.Icon; |
| import javax.swing.ImageIcon; |
| import javax.swing.JApplet; |
| import javax.swing.JFrame; |
| import javax.swing.JPanel; |
| import javax.swing.UIManager; |
| import javax.swing.border.Border; |
| import javax.swing.border.CompoundBorder; |
| import javax.swing.border.EmptyBorder; |
| import javax.swing.border.SoftBevelBorder; |
| |
| /** |
| * A generic SwingSet2 demo module |
| * |
| * @author Jeff Dinkins |
| */ |
| public class DemoModule extends JApplet { |
| |
| // The preferred size of the demo |
| private int PREFERRED_WIDTH = 680; |
| private int PREFERRED_HEIGHT = 600; |
| |
| Border loweredBorder = new CompoundBorder(new SoftBevelBorder(SoftBevelBorder.LOWERED), |
| new EmptyBorder(5,5,5,5)); |
| |
| // Premade convenience dimensions, for use wherever you need 'em. |
| public static Dimension HGAP2 = new Dimension(2,1); |
| public static Dimension VGAP2 = new Dimension(1,2); |
| |
| public static Dimension HGAP5 = new Dimension(5,1); |
| public static Dimension VGAP5 = new Dimension(1,5); |
| |
| public static Dimension HGAP10 = new Dimension(10,1); |
| public static Dimension VGAP10 = new Dimension(1,10); |
| |
| public static Dimension HGAP15 = new Dimension(15,1); |
| public static Dimension VGAP15 = new Dimension(1,15); |
| |
| public static Dimension HGAP20 = new Dimension(20,1); |
| public static Dimension VGAP20 = new Dimension(1,20); |
| |
| public static Dimension HGAP25 = new Dimension(25,1); |
| public static Dimension VGAP25 = new Dimension(1,25); |
| |
| public static Dimension HGAP30 = new Dimension(30,1); |
| public static Dimension VGAP30 = new Dimension(1,30); |
| |
| private SwingSet2 swingset = null; |
| private JPanel panel = null; |
| private String resourceName = null; |
| private String iconPath = null; |
| private String sourceCode = null; |
| |
| public DemoModule(SwingSet2 swingset) { |
| this(swingset, null, null); |
| } |
| |
| public DemoModule(SwingSet2 swingset, String resourceName, String iconPath) { |
| UIManager.put("swing.boldMetal", Boolean.FALSE); |
| panel = new JPanel(); |
| panel.setLayout(new BorderLayout()); |
| |
| this.resourceName = resourceName; |
| this.iconPath = iconPath; |
| this.swingset = swingset; |
| |
| loadSourceCode(); |
| } |
| |
| public String getResourceName() { |
| return resourceName; |
| } |
| |
| public JPanel getDemoPanel() { |
| return panel; |
| } |
| |
| public SwingSet2 getSwingSet2() { |
| return swingset; |
| } |
| |
| |
| public String getString(String key) { |
| |
| if (getSwingSet2() != null) { |
| return getSwingSet2().getString(key); |
| }else{ |
| return "nada"; |
| } |
| } |
| |
| public char getMnemonic(String key) { |
| return (getString(key)).charAt(0); |
| } |
| |
| public ImageIcon createImageIcon(String filename, String description) { |
| if(getSwingSet2() != null) { |
| return getSwingSet2().createImageIcon(filename, description); |
| } else { |
| String path = "/resources/images/" + filename; |
| return new ImageIcon(getClass().getResource(path), description); |
| } |
| } |
| |
| |
| public String getSourceCode() { |
| return sourceCode; |
| } |
| |
| public void loadSourceCode() { |
| if(getResourceName() != null) { |
| String filename = getResourceName() + ".java"; |
| sourceCode = new String("<html><body bgcolor=\"#ffffff\"><pre>"); |
| InputStream is; |
| InputStreamReader isr; |
| URL url; |
| |
| try { |
| url = getClass().getResource(filename); |
| is = url.openStream(); |
| isr = new InputStreamReader(is, "UTF-8"); |
| BufferedReader reader = new BufferedReader(isr); |
| |
| // Read one line at a time, htmlize using super-spiffy |
| // html java code formating utility from www.CoolServlets.com |
| String line = reader.readLine(); |
| while(line != null) { |
| sourceCode += line + " \n "; |
| line = reader.readLine(); |
| } |
| sourceCode += new String("</pre></body></html>"); |
| } catch (Exception ex) { |
| sourceCode = "Could not load file: " + filename; |
| } |
| } |
| } |
| |
| public String getName() { |
| return getString(getResourceName() + ".name"); |
| }; |
| |
| public Icon getIcon() { |
| return createImageIcon(iconPath, getResourceName() + ".name"); |
| }; |
| |
| public String getToolTip() { |
| return getString(getResourceName() + ".tooltip"); |
| }; |
| |
| public void mainImpl() { |
| JFrame frame = new JFrame(getName()); |
| frame.getContentPane().setLayout(new BorderLayout()); |
| frame.getContentPane().add(getDemoPanel(), BorderLayout.CENTER); |
| getDemoPanel().setPreferredSize(new Dimension(PREFERRED_WIDTH, PREFERRED_HEIGHT)); |
| frame.pack(); |
| frame.show(); |
| } |
| |
| public JPanel createHorizontalPanel(boolean threeD) { |
| JPanel p = new JPanel(); |
| p.setLayout(new BoxLayout(p, BoxLayout.X_AXIS)); |
| p.setAlignmentY(TOP_ALIGNMENT); |
| p.setAlignmentX(LEFT_ALIGNMENT); |
| if(threeD) { |
| p.setBorder(loweredBorder); |
| } |
| return p; |
| } |
| |
| public JPanel createVerticalPanel(boolean threeD) { |
| JPanel p = new JPanel(); |
| p.setLayout(new BoxLayout(p, BoxLayout.Y_AXIS)); |
| p.setAlignmentY(TOP_ALIGNMENT); |
| p.setAlignmentX(LEFT_ALIGNMENT); |
| if(threeD) { |
| p.setBorder(loweredBorder); |
| } |
| return p; |
| } |
| |
| public static void main(String[] args) { |
| DemoModule demo = new DemoModule(null); |
| demo.mainImpl(); |
| } |
| |
| public void init() { |
| getContentPane().setLayout(new BorderLayout()); |
| getContentPane().add(getDemoPanel(), BorderLayout.CENTER); |
| } |
| |
| void updateDragEnabled(boolean dragEnabled) {} |
| } |