/* * Created on Jan 16, 2006 * */ package net.atlanticbb.tantlinger.ui.text.dialogs; import java.awt.BorderLayout; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.util.*; import javax.swing.BorderFactory; import javax.swing.JCheckBox; import javax.swing.JTextField; import javax.swing.JPanel; import javax.swing.JTabbedPane; import net.atlanticbb.tantlinger.ui.text.HTMLUtils; import net.atlanticbb.tantlinger.ui.text.TextEditPopupManager; public class ImagePanel extends HTMLAttributeEditorPanel { /** * */ private static final long serialVersionUID = 1L; private ImageAttributesPanel imageAttrPanel; private LinkAttributesPanel linkAttrPanel; private JTextField linkUrlField; private JCheckBox linkCB; public ImagePanel() { this(new Hashtable()); } public ImagePanel(Hashtable at) { super(); initialize(); setAttributes(at); updateComponentsFromAttribs(); } private String createAttribs(Map ht) { String html = ""; //$NON-NLS-1$ for(Iterator e = ht.keySet().iterator(); e.hasNext();) { Object k = e.next(); html += " " + k + "=" + "\"" + ht.get(k) + "\""; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ } return html; } public void updateComponentsFromAttribs() { imageAttrPanel.setAttributes(attribs); if(attribs.containsKey("a")) //$NON-NLS-1$ { linkCB.setSelected(true); linkAttrPanel.setEnabled(true); linkUrlField.setEditable(true); Map ht = HTMLUtils.tagAttribsToMap(attribs.get("a").toString()); //$NON-NLS-1$ if(ht.containsKey("href")) //$NON-NLS-1$ linkUrlField.setText(ht.get("href").toString()); //$NON-NLS-1$ else linkUrlField.setText(""); //$NON-NLS-1$ linkAttrPanel.setAttributes(ht); } else { linkCB.setSelected(false); linkAttrPanel.setEnabled(false); linkUrlField.setEditable(false); linkAttrPanel.setAttributes(new HashMap()); } } public void updateAttribsFromComponents() { imageAttrPanel.updateAttribsFromComponents(); linkAttrPanel.updateAttribsFromComponents(); if(linkCB.isSelected()) { Map ht = linkAttrPanel.getAttributes(); ht.put("href", linkUrlField.getText()); //$NON-NLS-1$ attribs.put("a", createAttribs(ht)); //$NON-NLS-1$ } else { attribs.remove("a"); //$NON-NLS-1$ } } private void initialize() { JTabbedPane tabs = new JTabbedPane(); linkAttrPanel = new LinkAttributesPanel(); linkCB = new JCheckBox(i18n.str("link")); //$NON-NLS-1$ linkUrlField = new JTextField(); //linkUrlField.setEditable(true); JPanel urlPanel = new JPanel(new GridBagLayout()); GridBagConstraints gbc = new GridBagConstraints(); gbc.gridx = 0; gbc.anchor = java.awt.GridBagConstraints.WEST; gbc.insets = new java.awt.Insets(0,0,5,5); gbc.gridy = 0; urlPanel.add(linkCB, gbc); gbc.fill = java.awt.GridBagConstraints.HORIZONTAL; gbc.gridy = 0; gbc.weightx = 1.0; gbc.insets = new java.awt.Insets(0,0,5,0); gbc.gridx = 1; urlPanel.add(linkUrlField, gbc); JPanel linkPanel = new JPanel(new BorderLayout(5, 5)); linkPanel.add(urlPanel, BorderLayout.NORTH); linkPanel.add(linkAttrPanel, BorderLayout.CENTER); linkPanel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5)); imageAttrPanel = new ImageAttributesPanel(); imageAttrPanel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5)); tabs.addTab(i18n.str("image"), imageAttrPanel); //$NON-NLS-1$ tabs.addTab(i18n.str("link"), linkPanel); //$NON-NLS-1$ setLayout(new BorderLayout()); add(tabs); linkAttrPanel.setEnabled(linkCB.isSelected()); linkUrlField.setEditable(linkCB.isSelected()); linkCB.addItemListener(new java.awt.event.ItemListener() { public void itemStateChanged(java.awt.event.ItemEvent e) { linkAttrPanel.setEnabled(linkCB.isSelected()); linkUrlField.setEditable(linkCB.isSelected()); } }); //TextEditPopupManager popupMan = new TextEditPopupManager(); //popupMan.addJTextComponent(linkUrlField); TextEditPopupManager.getInstance().registerJTextComponent(linkUrlField); } }