--- /dev/null
+package com.hexidec.ekit.component;\r
+\r
+import com.hexidec.ekit.EkitCore;\r
+import java.awt.Insets;\r
+import java.awt.Container;\r
+import java.awt.Cursor;\r
+import java.awt.Dimension;\r
+import java.awt.event.ActionListener;\r
+import java.awt.FlowLayout;\r
+import javax.swing.border.*;\r
+import javax.swing.BorderFactory;\r
+import javax.swing.Box;\r
+import javax.swing.BoxLayout;\r
+import javax.swing.event.ListSelectionListener;\r
+import javax.swing.event.ListSelectionEvent;\r
+import javax.swing.JButton;\r
+import javax.swing.JDialog;\r
+import javax.swing.JEditorPane;\r
+import javax.swing.JLabel;\r
+import javax.swing.JList;\r
+import javax.swing.JPanel;\r
+import javax.swing.JScrollPane;\r
+import javax.swing.JTextField;\r
+import javax.swing.JTextPane;\r
+import javax.swing.ListSelectionModel;\r
+import javax.swing.SwingConstants;\r
+import javax.swing.text.html.HTML;\r
+import javax.swing.text.html.HTMLDocument;\r
+import javax.swing.text.html.HTMLEditorKit;\r
+import javax.swing.WindowConstants;\r
+\r
+public class ImageDialog extends JDialog implements ActionListener\r
+{\r
+ private final String[]Borders = new String[] { "none", "solid", "dotted", "dashed", "double", "groove",\r
+ "ridge", "inset", "outset" };\r
+ private String[]BorderColors = new String[] { "aqua", "black", "blue", "fuschia", "gray",\r
+ "green", "lime", "maroon", "navy", "olive",\r
+ "purple", "red", "silver", "teal", "white", "yellow" };\r
+ private String[]BorderSizes = new String[] { "none", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10" };\r
+ private final String[]Wraps = new String[] { "none", "left", "right", "top", "middle", "bottom" };\r
+ private EkitCore ParentEkit;\r
+ private ExtendedHTMLEditorKit ImageHtmlKit;\r
+ private HTMLDocument ImageHtmlDoc;\r
+ private JList WrapList;\r
+ private JList BorderList;\r
+ private JList BorderSizeList;\r
+ private JList BorderColorList;\r
+ private JList ImageList;\r
+ private JTextField ImageAltText;\r
+ private JTextField ImageWidth;\r
+ private JTextField ImageHeight;\r
+ private JEditorPane PreviewPane;\r
+ private String ImageDir;\r
+ private String[]Images;\r
+ private String PreviewImage;\r
+ private String SelectedImage;\r
+\r
+ public ImageDialog(EkitCore parentEkit, String imageDir, String[] imageList, String title, boolean modal)\r
+ {\r
+ super(parentEkit.getFrame(), title, modal);\r
+ ImageDir = imageDir;\r
+ Images = imageList;\r
+ ParentEkit = parentEkit;\r
+ SelectedImage = null;\r
+ init();\r
+ }\r
+\r
+ public void actionPerformed(java.awt.event.ActionEvent e)\r
+ {\r
+ if(e.getActionCommand().equals("apply"))\r
+ {\r
+ ListSelectionModel sm = ImageList.getSelectionModel();\r
+ if(sm.isSelectionEmpty())\r
+ {\r
+ SimpleInfoDialog sidAbout = new SimpleInfoDialog(ParentEkit.getFrame(), "Error", true, "No image selected", SimpleInfoDialog.ERROR);\r
+ ImageList.requestFocus();\r
+ }\r
+ else\r
+ {\r
+ if(validateControls())\r
+ {\r
+ previewSelectedImage();\r
+ }\r
+ }\r
+ } \r
+ if(e.getActionCommand().equals("save"))\r
+ {\r
+ ListSelectionModel sm = ImageList.getSelectionModel();\r
+ if(sm.isSelectionEmpty())\r
+ {\r
+ SimpleInfoDialog sidAbout = new SimpleInfoDialog(ParentEkit.getFrame(), "Error", true, "No image selected", SimpleInfoDialog.ERROR);\r
+ ImageList.requestFocus();\r
+ }\r
+ else\r
+ {\r
+ if(validateControls())\r
+ {\r
+ previewSelectedImage();\r
+ SelectedImage = PreviewImage;\r
+ hide();\r
+ }\r
+ }\r
+ }\r
+ else if(e.getActionCommand().equals("cancel"))\r
+ {\r
+ hide();\r
+ }\r
+ }\r
+\r
+ public void init()\r
+ {\r
+ SelectedImage="";\r
+ Container contentPane = getContentPane();\r
+ contentPane.setLayout(new BoxLayout(contentPane, BoxLayout.Y_AXIS));\r
+ //setBounds(100,100,500,300);\r
+ setDefaultCloseOperation(WindowConstants.HIDE_ON_CLOSE);\r
+\r
+ ImageList = new JList(Images);\r
+ ImageList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
+ ImageList.clearSelection();\r
+ ListSelectionModel lsm = ImageList.getSelectionModel();\r
+\r
+ /* Create the editor kit, document, and stylesheet */\r
+ PreviewPane = new JEditorPane();\r
+ PreviewPane.setEditable(false);\r
+ ImageHtmlKit = new ExtendedHTMLEditorKit();\r
+ ImageHtmlDoc = (HTMLDocument)(ImageHtmlKit.createDefaultDocument());\r
+ ImageHtmlKit.setDefaultCursor(new Cursor(Cursor.TEXT_CURSOR));\r
+ PreviewPane.setCaretPosition(0);\r
+ //PreviewPane.getDocument().addDocumentListener(this);\r
+ //StyleSheet styleSheet = ImageHtmlDoc.getStyleSheet();\r
+ //ImageStyleSheet = styleSheet;\r
+ lsm.addListSelectionListener(new ListSelectionListener() \r
+ {\r
+ public void valueChanged(ListSelectionEvent e)\r
+ {\r
+ if(!e.getValueIsAdjusting() && validateControls())\r
+ {\r
+ previewSelectedImage();\r
+ }\r
+ }\r
+ \r
+ });\r
+\r
+ JScrollPane imageScrollPane = new JScrollPane(ImageList);\r
+ imageScrollPane.setPreferredSize(new Dimension(200,250));\r
+ imageScrollPane.setMaximumSize(new Dimension(200,250));\r
+ imageScrollPane.setAlignmentX(LEFT_ALIGNMENT);\r
+ JPanel centerPanel = new JPanel();\r
+ centerPanel.setLayout(new BoxLayout(centerPanel, BoxLayout.X_AXIS));\r
+ centerPanel.add(imageScrollPane);\r
+ centerPanel.setBorder(BorderFactory.createTitledBorder("Server Images"));\r
+\r
+ /* Set up the text pane */\r
+ PreviewPane.setEditorKit(ImageHtmlKit);\r
+ PreviewPane.setDocument(ImageHtmlDoc);\r
+ PreviewPane.setMargin(new Insets(4, 4, 4, 4));\r
+ JScrollPane previewViewport = new JScrollPane(PreviewPane);\r
+ previewViewport.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);\r
+ previewViewport.setPreferredSize(new Dimension(250,250));\r
+ centerPanel.add(previewViewport); \r
+\r
+ JPanel controlsPanel = new JPanel();\r
+ controlsPanel.setLayout(new BoxLayout(controlsPanel, BoxLayout.Y_AXIS));\r
+ JPanel altPanel = new JPanel();\r
+ altPanel.setLayout(new BoxLayout(altPanel, BoxLayout.X_AXIS));\r
+ altPanel.add(Box.createHorizontalStrut(10));\r
+ JLabel imageAltTextLabel = new JLabel("Alternate Text:", SwingConstants.LEFT); \r
+ altPanel.add(imageAltTextLabel);\r
+\r
+ ImageAltText = new JTextField("");\r
+ ImageAltText.addActionListener(this);\r
+ ImageAltText.setPreferredSize(new Dimension(300,25));\r
+ ImageAltText.setMaximumSize(new Dimension(600,25));\r
+ altPanel.add(ImageAltText);\r
+ altPanel.add(Box.createHorizontalStrut(10));\r
+ controlsPanel.add(altPanel);\r
+\r
+ controlsPanel.add(Box.createVerticalStrut(5));\r
+\r
+ JPanel dimPanel = new JPanel();\r
+ dimPanel.setLayout(new BoxLayout(dimPanel, BoxLayout.X_AXIS));\r
+ dimPanel.add(Box.createHorizontalStrut(10));\r
+ JLabel imageWidthLabel = new JLabel("Width:", SwingConstants.LEFT); \r
+ dimPanel.add(imageWidthLabel);\r
+ ImageWidth = new JTextField("");\r
+ ImageWidth.setPreferredSize(new Dimension(40,25));\r
+ ImageWidth.setMaximumSize(new Dimension(40,25));\r
+ dimPanel.add(ImageWidth);\r
+ JLabel imageWidthPixels = new JLabel("pix", SwingConstants.LEFT); \r
+ imageWidthPixels.setPreferredSize(new Dimension(20,10));\r
+ dimPanel.add(imageWidthPixels);\r
+ dimPanel.add(Box.createHorizontalStrut(10));\r
+ JLabel imageHeightLabel = new JLabel("Height:", SwingConstants.LEFT); \r
+ dimPanel.add(imageHeightLabel);\r
+ ImageHeight = new JTextField("");\r
+ ImageHeight.setPreferredSize(new Dimension(40,25));\r
+ ImageHeight.setMaximumSize(new Dimension(40,25));\r
+ dimPanel.add(ImageHeight);\r
+ JLabel imageHeightPixels = new JLabel("pix", SwingConstants.LEFT); \r
+ imageHeightPixels.setPreferredSize(new Dimension(20,10));\r
+ dimPanel.add(imageHeightPixels);\r
+ dimPanel.add(Box.createHorizontalStrut(10));\r
+\r
+ JLabel wrapLabel = new JLabel("Wrap:", SwingConstants.LEFT);\r
+ dimPanel.add(wrapLabel);\r
+ WrapList = new JList(Wraps);\r
+ WrapList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
+ WrapList.getSelectionModel().setSelectionInterval(0,0);\r
+ JScrollPane wrapScrollPane = new JScrollPane(WrapList);\r
+ wrapScrollPane.setAlignmentX(LEFT_ALIGNMENT);\r
+ wrapScrollPane.setPreferredSize(new Dimension(80,40));\r
+ wrapScrollPane.setMaximumSize(new Dimension(80,100));\r
+ dimPanel.add(wrapScrollPane);\r
+ controlsPanel.add(dimPanel);\r
+\r
+ //JPanel borderPanel = new JPanel();\r
+ //JLabel borderStyleLabel = new JLabel("Style:", SwingConstants.LEFT);\r
+ //borderPanel.add(borderStyleLabel);\r
+ //BorderList = new JList(Borders);\r
+ //BorderList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
+ //BorderList.getSelectionModel().setSelectionInterval(0,0);\r
+ //JScrollPane borderScrollPane = new JScrollPane(BorderList);\r
+ //borderScrollPane.setAlignmentX(LEFT_ALIGNMENT);\r
+ //borderScrollPane.setPreferredSize(new Dimension(80,40));\r
+ //borderScrollPane.setMaximumSize(new Dimension(80,100));\r
+ //borderPanel.add(borderScrollPane);\r
+ //borderPanel.add(Box.createHorizontalStrut(5));\r
+\r
+ dimPanel.add(Box.createHorizontalStrut(5));\r
+ JLabel borderSizeLabel = new JLabel("Border Size:", SwingConstants.LEFT);\r
+ dimPanel.add(borderSizeLabel);\r
+ BorderSizeList = new JList(BorderSizes);\r
+ BorderSizeList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
+ BorderSizeList.getSelectionModel().setSelectionInterval(0,0);\r
+ JScrollPane borderSizeScrollPane = new JScrollPane(BorderSizeList);\r
+ borderSizeScrollPane.setAlignmentX(LEFT_ALIGNMENT);\r
+ borderSizeScrollPane.setPreferredSize(new Dimension(80,40));\r
+ borderSizeScrollPane.setMaximumSize(new Dimension(80,100));\r
+ dimPanel.add(borderSizeScrollPane);\r
+ dimPanel.add(Box.createHorizontalStrut(10));\r
+ dimPanel.add(Box.createVerticalStrut(10));\r
+\r
+ //JLabel borderColorLabel = new JLabel("Color:", SwingConstants.LEFT);\r
+ //borderPanel.add(borderColorLabel);\r
+ //BorderColorList = new JList(BorderColors);\r
+ //BorderColorList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
+ //JScrollPane borderColorScrollPane = new JScrollPane(BorderColorList);\r
+ //borderColorScrollPane.setAlignmentX(LEFT_ALIGNMENT);\r
+ //borderColorScrollPane.setPreferredSize(new Dimension(80,40));\r
+ //borderPanel.add(borderColorScrollPane);\r
+ //controlsPanel.add(borderPanel);\r
+\r
+ JPanel buttonPanel= new JPanel();\r
+ buttonPanel.setBorder(new SoftBevelBorder(BevelBorder.LOWERED));\r
+ JButton applyButton = new JButton("Apply");\r
+ applyButton.setActionCommand("apply");\r
+ applyButton.addActionListener(this);\r
+\r
+ JButton saveButton = new JButton("Accept");\r
+ saveButton.setActionCommand("save");\r
+ saveButton.addActionListener(this);\r
+ JButton cancelButton = new JButton("Cancel");\r
+ cancelButton.setActionCommand("cancel");\r
+ cancelButton.addActionListener(this);\r
+\r
+ buttonPanel.add(applyButton);\r
+ buttonPanel.add(saveButton);\r
+ buttonPanel.add(cancelButton);\r
+\r
+ contentPane.add(centerPanel);\r
+ contentPane.add(controlsPanel);\r
+ contentPane.add(buttonPanel);\r
+ this.pack();\r
+ setVisible(true);\r
+ }\r
+\r
+ private void previewSelectedImage()\r
+ {\r
+ ListSelectionModel sm = ImageList.getSelectionModel();\r
+ if(!sm.isSelectionEmpty())\r
+ {\r
+ String theImage = Images[sm.getMinSelectionIndex()];\r
+ try\r
+ {\r
+ // Clear the preview area\r
+ PreviewPane.setText("");\r
+ StringBuffer attrString = new StringBuffer();\r
+ if(!ImageHeight.getText().equals(""))\r
+ {\r
+ attrString.append("HEIGHT=\"" + ImageHeight.getText() + "\" ");\r
+ }\r
+ if(!ImageWidth.getText().equals(""))\r
+ {\r
+ attrString.append("WIDTH=\"" + ImageWidth.getText() + "\" ");\r
+ }\r
+ if(!ImageAltText.getText().equals(""))\r
+ {\r
+ attrString.append("ALT=\"" + ImageAltText.getText() + "\" ");\r
+ }\r
+ if(!WrapList.getSelectionModel().isSelectionEmpty())\r
+ {\r
+ String theWrap = Wraps[WrapList.getSelectionModel().getMinSelectionIndex()];\r
+ if(!theWrap.equals("none"))\r
+ {\r
+ attrString.append("ALIGN=\"" + theWrap + "\" ");\r
+ }\r
+ }\r
+ //if(!BorderList.getSelectionModel().isSelectionEmpty())\r
+ //{\r
+ //String theBorder = Borders[BorderList.getSelectionModel().getMinSelectionIndex()];\r
+ //if(!theBorder.equals("none"))\r
+ //{\r
+ String borderSize = null;\r
+ String borderColor = null;\r
+ if(!BorderSizeList.getSelectionModel().isSelectionEmpty())\r
+ {\r
+ borderSize = BorderSizes[BorderSizeList.getSelectionModel().getMinSelectionIndex()];\r
+ if(!borderSize.equals("none"))\r
+ attrString.append("BORDER=" + borderSize);\r
+ }\r
+ else\r
+ {\r
+ borderSize = BorderSizes[0];\r
+ }\r
+ //if(!BorderColorList.getSelectionModel().isSelectionEmpty())\r
+ //{\r
+ // borderColor = BorderColors[BorderColorList.getSelectionModel().getMinSelectionIndex()]; \r
+ //}\r
+ //else\r
+ //{\r
+ // borderColor = "gray";\r
+ //}\r
+ //attrString.append("STYLE=\"border: " + borderColor + " " + borderSize + "px " + theBorder + "\"");\r
+ //}\r
+ //}\r
+\r
+ \r
+ PreviewImage = "<IMG SRC=" + ImageDir + "/" + theImage + " " + attrString.toString() + ">";\r
+ ImageHtmlKit.insertHTML(ImageHtmlDoc, 0, PreviewImage, 0, 0, HTML.Tag.IMG);\r
+ repaint();\r
+ }\r
+ catch(Exception ex)\r
+ {\r
+ System.err.println("Exception previewing image");\r
+ }\r
+ }\r
+ }\r
+\r
+ private boolean validateControls()\r
+ {\r
+ boolean result = true;\r
+\r
+ if(!ImageWidth.getText().equals(""))\r
+ {\r
+ try\r
+ {\r
+ Integer.parseInt(ImageWidth.getText());\r
+ }\r
+ catch (NumberFormatException e)\r
+ {\r
+ result = false;\r
+ SimpleInfoDialog sidAbout = new SimpleInfoDialog(ParentEkit.getFrame(), "Error", true, "Image Width is not an integer", SimpleInfoDialog.ERROR);\r
+ ImageWidth.requestFocus();\r
+ }\r
+ }\r
+ if( result && !ImageHeight.getText().equals(""))\r
+ {\r
+ try\r
+ {\r
+ Integer.parseInt(ImageHeight.getText());\r
+ }\r
+ catch (NumberFormatException e)\r
+ {\r
+ result = false;\r
+ SimpleInfoDialog sidAbout = new SimpleInfoDialog(ParentEkit.getFrame(), "Error", true, "Image Height is not an integer", SimpleInfoDialog.ERROR);\r
+ ImageHeight.requestFocus();\r
+ }\r
+ }\r
+\r
+ return result;\r
+ }\r
+\r
+ public String getSelectedImage()\r
+ {\r
+ return SelectedImage;\r
+ } \r
+}\r