/** * Copyright (c) 2009 Juwi MacMillan Group GmbH * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * Created on 20.08.2004 */ package de.juwimm.cms.gui.admin; import static de.juwimm.cms.client.beans.Application.getBean; import static de.juwimm.cms.common.Constants.rb; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.text.Collator; import java.util.Arrays; import java.util.Comparator; import javax.swing.DefaultComboBoxModel; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JComboBox; import javax.swing.JDialog; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JTextField; import org.apache.log4j.Logger; import org.w3c.dom.CDATASection; import org.w3c.dom.Element; import org.w3c.dom.Node; import de.juwimm.cms.client.beans.Beans; import de.juwimm.cms.content.ContentManager; import de.juwimm.cms.content.event.EditpaneFiredEvent; import de.juwimm.cms.content.event.EditpaneFiredListener; import de.juwimm.cms.content.modules.InternalLink; import de.juwimm.cms.content.modules.Module; import de.juwimm.cms.util.ActionHub; import de.juwimm.cms.util.Communication; import de.juwimm.cms.vo.HostValue; import de.juwimm.cms.vo.SiteValue; import de.juwimm.cms.vo.ViewComponentValue; import de.juwimm.swing.DropDownHolder; import de.juwimm.swing.SortingListModel; /** * Dialog for creating a new host * * @author <a href="mailto:carsten.schalm@juwimm.com">Carsten Schalm</a> * @company Juwi|MacMillan Group Gmbh, Walsrode, Germany * @version $Id$ */ public class CreateNewHostDialog extends JDialog implements EditpaneFiredListener { private static Logger log = Logger.getLogger(CreateNewHostDialog.class); private static final int MODE_ADD_HOST = 0; private static final int MODE_EDIT_HOST = 1; private JPanel panContentPane = null; private JTextField txtHost = null; private JButton btnAddHost = null; private JButton btnCancelHost = null; private JPanel parent = null; private Module chooseViewComponentDialog = null; private JLabel lblHeadline = new JLabel(); private HostValue currentHost = null; private int mode = CreateNewHostDialog.MODE_ADD_HOST; private Integer startPageId = null; private JTextField txtStartPage = null; private JPanel panStartPage = null; private JLabel lblStartPage = null; private JButton btnChooseStartPage = null; private JButton btnDeleteStartPage = null; private Communication communication = ((Communication) getBean(Beans.COMMUNICATION)); private boolean assignSiteAutomatically = false; private JLabel lblRedirectUrl = null; private JTextField txtRedirectUrl = null; private JLabel lblRedirectHost = null; private JComboBox cbRedirectHost = null; private JLabel lblLiveServer = null; private JCheckBox liveServer = null; /** * This constructor can be used to edit an existing host * @param parent * @param host * @param autoAssignSite */ public CreateNewHostDialog(JPanel parent, HostValue host, boolean autoAssignSite) { super(); this.setModal(true); this.setTitle(rb.getString("panel.admin.host.createhost")); initialize(); this.chooseViewComponentDialog = new InternalLink(true); chooseViewComponentDialog.addEditpaneFiredListener(this); this.mode = CreateNewHostDialog.MODE_ADD_HOST; this.parent = parent; this.mode = CreateNewHostDialog.MODE_ADD_HOST; this.assignSiteAutomatically = autoAssignSite; if (host != null) { this.currentHost = host; this.btnAddHost.setText(rb.getString("dialog.change")); this.setTitle(rb.getString("panel.admin.host.edithost")); this.lblHeadline.setText(rb.getString("panel.admin.host.pleaseedithost") + ":"); this.txtHost.setText(host.getHostName()); this.txtHost.setEditable(false); String startPageName = ""; String sPage = communication.getStartPage(host.getHostName()); if ((sPage != null) && (!("".equalsIgnoreCase(sPage)))) { this.startPageId = Integer.valueOf(sPage); startPageName = getVcTitle(sPage); } this.txtStartPage.setText(startPageName); this.txtRedirectUrl.setText(host.getRedirectUrl()); this.liveServer.setSelected(host.getLiveServer()); this.mode = CreateNewHostDialog.MODE_EDIT_HOST; this.updateValues(); } } /** * This method initializes this * * @return void */ private void initialize() { this.setSize(480, 330); this.setResizable(false); this.setContentPane(getPanContentPane()); this.getRootPane().setDefaultButton(this.btnAddHost); } /** * This method initializes panContentPane * * @return javax.swing.JPanel */ private JPanel getPanContentPane() { if (panContentPane == null) { GridBagConstraints gridBagConstraints14 = new GridBagConstraints(); gridBagConstraints14.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints14.gridy = 3; gridBagConstraints14.weightx = 1.0; gridBagConstraints14.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints14.insets = new java.awt.Insets(5, 5, 0, 10); gridBagConstraints14.gridx = 1; GridBagConstraints gridBagConstraints8 = new GridBagConstraints(); gridBagConstraints8.gridx = 0; gridBagConstraints8.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints8.insets = new java.awt.Insets(8, 10, 0, 0); gridBagConstraints8.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints8.gridy = 3; lblRedirectHost = new JLabel(); lblRedirectHost.setText("Redirect Host:"); GridBagConstraints gridBagConstraints1 = new GridBagConstraints(); gridBagConstraints1.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints1.gridy = 2; gridBagConstraints1.weightx = 1.0; gridBagConstraints1.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints1.insets = new java.awt.Insets(5, 5, 0, 10); gridBagConstraints1.gridx = 1; GridBagConstraints gridBagConstraints = new GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints.insets = new java.awt.Insets(8, 10, 0, 0); gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.gridy = 2; lblRedirectUrl = new JLabel(); lblRedirectUrl.setText("Redirect Url:"); GridBagConstraints gridBagConstraints3 = new GridBagConstraints(); GridBagConstraints gridBagConstraints21 = new GridBagConstraints(); GridBagConstraints gridBagConstraints2 = new GridBagConstraints(); GridBagConstraints gridBagConstraints4 = new GridBagConstraints(); GridBagConstraints gridBagConstraints41 = new GridBagConstraints(); java.awt.GridBagConstraints gridBagConstraints13 = new GridBagConstraints(); java.awt.GridBagConstraints gridBagConstraints12 = new GridBagConstraints(); java.awt.GridBagConstraints gridBagConstraints11 = new GridBagConstraints(); java.awt.GridBagConstraints gridBagConstraints10 = new GridBagConstraints(); java.awt.GridBagConstraints gridBagConstraints9 = new GridBagConstraints(); javax.swing.JLabel lblHost = new JLabel(); panContentPane = new JPanel(); panContentPane.setLayout(new GridBagLayout()); lblHost.setText("Host:"); gridBagConstraints9.gridx = 0; gridBagConstraints9.gridy = 1; gridBagConstraints9.insets = new java.awt.Insets(10, 10, 0, 0); gridBagConstraints9.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints9.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints9.gridheight = 1; gridBagConstraints9.gridwidth = 1; gridBagConstraints10.gridx = 1; gridBagConstraints10.gridy = 1; gridBagConstraints10.weightx = 1.0D; gridBagConstraints10.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints10.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints10.insets = new java.awt.Insets(10, 5, 0, 10); gridBagConstraints10.gridwidth = 1; gridBagConstraints11.gridx = 0; gridBagConstraints11.gridy = 6; gridBagConstraints11.anchor = java.awt.GridBagConstraints.SOUTHWEST; gridBagConstraints11.insets = new java.awt.Insets(5, 10, 10, 0); gridBagConstraints11.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints12.gridx = 1; gridBagConstraints12.gridy = 6; gridBagConstraints12.anchor = java.awt.GridBagConstraints.SOUTHEAST; gridBagConstraints12.insets = new java.awt.Insets(5, 5, 10, 10); gridBagConstraints13.gridx = 0; gridBagConstraints13.gridy = 0; gridBagConstraints13.gridwidth = 2; gridBagConstraints13.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints13.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints13.insets = new java.awt.Insets(10, 10, 0, 10); lblHeadline.setText(rb.getString("panel.admin.host.pleaseenterhost") + ":"); gridBagConstraints2.gridx = 1; gridBagConstraints2.gridy = 2; gridBagConstraints2.weightx = 1.0; gridBagConstraints2.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints2.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints2.insets = new java.awt.Insets(10, 5, 0, 10); gridBagConstraints21.gridx = 1; gridBagConstraints21.gridy = 2; gridBagConstraints21.weightx = 1.0D; gridBagConstraints21.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints21.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints21.insets = new java.awt.Insets(10, 5, 0, 10); gridBagConstraints21.gridwidth = 2; gridBagConstraints3.gridx = 0; gridBagConstraints3.gridy = 5; gridBagConstraints3.gridwidth = 2; gridBagConstraints3.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints3.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints3.insets = new java.awt.Insets(10, 10, 0, 10); lblLiveServer = new JLabel(); lblLiveServer.setText(rb.getString("panel.admin.host.liveServer")); gridBagConstraints4.gridx = 0; gridBagConstraints4.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints4.insets = new java.awt.Insets(10, 10, 0, 0); gridBagConstraints4.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints4.gridy = 4; gridBagConstraints41.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints41.gridy = 4; gridBagConstraints41.weightx = 1.0; gridBagConstraints41.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints41.insets = new java.awt.Insets(5, 5, 0, 10); gridBagConstraints41.gridx = 1; panContentPane.add(lblHost, gridBagConstraints9); panContentPane.add(getTxtHost(), gridBagConstraints10); panContentPane.add(getBtnAddHost(), gridBagConstraints11); panContentPane.add(getBtnCancelHost(), gridBagConstraints12); panContentPane.add(lblHeadline, gridBagConstraints13); panContentPane.add(getPanStartPage(), gridBagConstraints3); panContentPane.add(lblRedirectUrl, gridBagConstraints); panContentPane.add(getTxtRedirectUrl(), gridBagConstraints1); panContentPane.add(lblRedirectHost, gridBagConstraints8); panContentPane.add(getCbRedirectHost(), gridBagConstraints14); panContentPane.add(lblLiveServer, gridBagConstraints4); panContentPane.add(getLiveServer(), gridBagConstraints41); } return panContentPane; } private JCheckBox getLiveServer() { if (liveServer == null) { liveServer = new JCheckBox(); } return liveServer; } /** * This method initializes txtHost * * @return javax.swing.JTextField */ private JTextField getTxtHost() { if (txtHost == null) { txtHost = new JTextField(); txtHost.setText("Hostname"); txtHost.setPreferredSize(new java.awt.Dimension(100, 20)); txtHost.setMinimumSize(new java.awt.Dimension(100, 20)); } return txtHost; } /** * This method initializes btnAddHost * * @return javax.swing.JButton */ private JButton getBtnAddHost() { if (btnAddHost == null) { btnAddHost = new JButton(); btnAddHost.setText(rb.getString("dialog.add")); btnAddHost.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { btnAddActionPerformed(e); } }); } return btnAddHost; } /** * This method initializes btnCancelHost * * @return javax.swing.JButton */ private JButton getBtnCancelHost() { if (btnCancelHost == null) { btnCancelHost = new JButton(); btnCancelHost.setText(rb.getString("dialog.cancel")); } btnCancelHost.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { btnCancelActionPerformed(e); } }); return btnCancelHost; } private void btnCancelActionPerformed(ActionEvent e) { this.setVisible(false); this.dispose(); } private void setControlsStatus(boolean status) { this.getTxtHost().setEnabled(status); this.getTxtStartPage().setEnabled(status); this.getTxtRedirectUrl().setEnabled(status); this.getCbRedirectHost().setEnabled(status); this.getBtnAddHost().setEnabled(status); this.getBtnCancelHost().setEnabled(status); this.getBtnChooseStartPage().setEnabled(status); this.getBtnDeleteStartPage().setEnabled(status); } private void btnAddActionPerformed(ActionEvent e) { setControlsStatus(false); if (this.mode == CreateNewHostDialog.MODE_ADD_HOST) { String newHost = txtHost.getText(); if ("".equalsIgnoreCase(newHost)) { ActionHub.showMessageDialog(rb.getString("panel.admin.host.pleaseenterhost"), JOptionPane.ERROR_MESSAGE); return; } HostValue hv = new HostValue(); SortingListModel model = ((PanHost) parent).getHostListModel(); boolean found = false; for (int i = (model.getSize() - 1); i >= 0; i--) { if (((HostValue) ((DropDownHolder) model.getElementAt(i)).getObject()).getHostName().equalsIgnoreCase(newHost)) { found = true; break; } } if (found) { ActionHub.showMessageDialog(rb.getString("dialog.entryAlreadyExists"), JOptionPane.ERROR_MESSAGE); setControlsStatus(true);//set to true so that user can modify return; } try { hv.setHostName(newHost); if (this.assignSiteAutomatically) { SiteValue site = communication.getCurrentSite(); hv.setSiteId(site.getSiteId()); } else { ((PanHost) parent).getPickListData().getLstRightModel().addElement(new DropDownHolder(hv, hv.getHostName())); } if (txtStartPage.getText().length() > 0) { if (this.startPageId != null) { hv.setStartPageId(this.startPageId); } } hv.setLiveServer(liveServer.isSelected()); if (this.getTxtRedirectUrl().getText().length() > 0) { hv.setRedirectUrl(this.getTxtRedirectUrl().getText()); } else { hv.setRedirectUrl(null); } if (this.getCbRedirectHost().getSelectedIndex() >= 0) { Object selectedItem = this.getCbRedirectHost().getSelectedItem(); if (selectedItem != null && ((DropDownHolder) selectedItem).getObject() != null) { String redirectHost = ((HostValue) ((DropDownHolder) selectedItem).getObject()).getHostName(); if (redirectHost.length() > 0) { hv.setRedirectHostName(redirectHost); } else { hv.setRedirectHostName(null); } } else { hv.setRedirectHostName(null); } } hv = communication.createHost(hv); } catch (Exception ex) { log.error(ex.getMessage()); } model.addElement(new DropDownHolder(hv, hv.getHostName())); txtHost.setText(""); ((PanHost) parent).reload(); this.currentHost = hv; } else if (this.mode == CreateNewHostDialog.MODE_EDIT_HOST) { if (this.currentHost != null) { HostValue hv = currentHost; if (txtStartPage.getText().length() > 0) { hv.setStartPageId(this.startPageId); } else { hv.setStartPageId(null); } if (this.assignSiteAutomatically) { SiteValue site = communication.getCurrentSite(); hv.setSiteId(site.getSiteId()); } if (liveServer.isSelected() != this.currentHost.getLiveServer()) { hv.setLiveServer(liveServer.isSelected()); } if (this.getTxtRedirectUrl().getText().length() > 0) { hv.setRedirectUrl(this.getTxtRedirectUrl().getText()); } else { hv.setRedirectUrl(null); } if (this.getCbRedirectHost().getSelectedIndex() >= 0) { Object selectedItem = this.getCbRedirectHost().getSelectedItem(); if (selectedItem != null && ((DropDownHolder) selectedItem).getObject() != null) { String redirectHost = ((HostValue) ((DropDownHolder) selectedItem).getObject()).getHostName(); if (redirectHost.length() > 0) { hv.setRedirectHostName(redirectHost); } else { hv.setRedirectHostName(null); } } else { hv.setRedirectHostName(null); } ((PanHost) parent).reload(); } communication.updateHost(hv); ((PanHost) parent).getHostListModel().fireContentsChanged(); } } this.setVisible(false); } /* (non-Javadoc) * @see de.juwimm.cms.content.event.EditpaneFiredListener#editpaneFiredPerformed(de.juwimm.cms.content.event.EditpaneFiredEvent) */ public void editpaneFiredPerformed(EditpaneFiredEvent ae) { Node prop = chooseViewComponentDialog.getProperties(); String viewId = ((Element) prop.getFirstChild()).getAttribute("viewid"); this.startPageId = Integer.valueOf(viewId); this.txtStartPage.setText(getVcTitle(viewId)); this.setVisible(true); } /* (non-Javadoc) * @see de.juwimm.cms.content.event.EditpaneFiredListener#editpaneCancelPerformed(de.juwimm.cms.content.event.EditpaneFiredEvent) */ public void editpaneCancelPerformed(EditpaneFiredEvent ae) { this.setVisible(true); } private void chooseStartPageLink() { try { Element elmLinkRoot = ContentManager.getDomDoc().createElement("linkRoot"); Element elmInternalLink = ContentManager.getDomDoc().createElement("internalLink"); CDATASection txtNode = ContentManager.getDomDoc().createCDATASection(""); elmInternalLink.appendChild(txtNode); if (currentHost != null) { String viewComponentId = communication.getStartPage(currentHost.getHostName()); if (!("".equalsIgnoreCase(viewComponentId))) { elmInternalLink.setAttribute("viewid", viewComponentId); } } elmLinkRoot.appendChild(elmInternalLink); chooseViewComponentDialog.setProperties(elmLinkRoot); chooseViewComponentDialog.viewModalUI(true); chooseViewComponentDialog.load(); } catch (Exception exe) { log.error("Error adding new vc-id", exe); } } /** * This method initializes txtStartPage * * @return javax.swing.JTextField */ private JTextField getTxtStartPage() { if (txtStartPage == null) { txtStartPage = new JTextField(); txtStartPage.setEditable(false); } return txtStartPage; } /** * This method initializes panStartPage * * @return javax.swing.JPanel */ private JPanel getPanStartPage() { if (panStartPage == null) { lblStartPage = new JLabel(); GridBagConstraints gridBagConstraints4 = new GridBagConstraints(); GridBagConstraints gridBagConstraints5 = new GridBagConstraints(); GridBagConstraints gridBagConstraints6 = new GridBagConstraints(); GridBagConstraints gridBagConstraints7 = new GridBagConstraints(); panStartPage = new JPanel(); panStartPage.setLayout(new GridBagLayout()); panStartPage.setBorder(javax.swing.BorderFactory.createTitledBorder(rb.getString("panel.admin.host.startpage"))); gridBagConstraints4.gridx = 1; gridBagConstraints4.gridy = 0; gridBagConstraints4.weightx = 1.0; gridBagConstraints4.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints4.insets = new java.awt.Insets(5, 5, 0, 5); gridBagConstraints4.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints4.gridwidth = 2; gridBagConstraints5.gridx = 0; gridBagConstraints5.gridy = 0; gridBagConstraints5.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints5.insets = new java.awt.Insets(5, 5, 0, 0); lblStartPage.setText(rb.getString("panel.admin.host.startpage")); gridBagConstraints6.gridx = 1; gridBagConstraints6.gridy = 1; gridBagConstraints6.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints6.insets = new java.awt.Insets(5, 5, 5, 0); gridBagConstraints6.fill = java.awt.GridBagConstraints.NONE; gridBagConstraints7.gridx = 2; gridBagConstraints7.gridy = 1; gridBagConstraints7.anchor = java.awt.GridBagConstraints.NORTHEAST; gridBagConstraints7.insets = new java.awt.Insets(5, 5, 5, 5); panStartPage.add(getTxtStartPage(), gridBagConstraints4); panStartPage.add(lblStartPage, gridBagConstraints5); panStartPage.add(getBtnChooseStartPage(), gridBagConstraints6); panStartPage.add(getBtnDeleteStartPage(), gridBagConstraints7); } return panStartPage; } /** * This method initializes btnChooseStartPage * * @return javax.swing.JButton */ private JButton getBtnChooseStartPage() { if (btnChooseStartPage == null) { btnChooseStartPage = new JButton(); btnChooseStartPage.setText(rb.getString("panel.admin.host.choose")); } btnChooseStartPage.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { btnChooseStartPageActionPerformed(e); } }); return btnChooseStartPage; } /** * This method initializes btnDeleteStartPage * * @return javax.swing.JButton */ private JButton getBtnDeleteStartPage() { if (btnDeleteStartPage == null) { btnDeleteStartPage = new JButton(); btnDeleteStartPage.setText(rb.getString("dialog.delete")); } btnDeleteStartPage.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { btnDeleteStartPageActionPerformed(e); } }); return btnDeleteStartPage; } public void btnChooseStartPageActionPerformed(ActionEvent e) { this.chooseStartPageLink(); } public void btnDeleteStartPageActionPerformed(ActionEvent e) { if (txtStartPage.getText().length() > 0) { txtStartPage.setText(""); } } public String getVcTitle(String vcId) { ViewComponentValue vcDao = null; try { vcDao = this.communication.getViewComponent(new Integer(vcId).intValue()); } catch (Exception e) { log.error(e.getMessage()); } String vcTitle = ""; if (vcDao != null) { vcTitle = vcDao.getDisplayLinkName(); } if (vcTitle.length() == 0) { vcTitle = vcId; } return (vcTitle); } /** * This method initializes txtRedirectUrl * * @return javax.swing.JTextField */ private JTextField getTxtRedirectUrl() { if (txtRedirectUrl == null) { txtRedirectUrl = new JTextField(); } return txtRedirectUrl; } /** * This method initializes cbRedirectHost * * @return javax.swing.JComboBox */ private JComboBox getCbRedirectHost() { if (cbRedirectHost == null) { cbRedirectHost = new JComboBox(); cbRedirectHost.setEditable(false); HostValue[] hostList = null; try { if (this.communication.getUser().isMasterRoot()) { if (log.isDebugEnabled()) log.debug("MasterRoot: getAllHosts()"); hostList = this.communication.getAllHosts(); } else { if (log.isDebugEnabled()) log.debug("SiteRoot: getHosts()"); hostList = this.communication.getHosts(); } } catch (Exception e) { log.error("Error on getting hostlist: " + e.getMessage()); } ((DefaultComboBoxModel) cbRedirectHost.getModel()).removeAllElements(); if (hostList != null) { DropDownHolder[] ddhArray = new DropDownHolder[hostList.length + 1]; for (int i = (hostList.length - 1); i >= 0; i--) { ddhArray[i] = new DropDownHolder(hostList[i], hostList[i].getHostName()); } ddhArray[hostList.length] = new DropDownHolder(null, ""); Arrays.sort(ddhArray, localeSensitiveStringComparator); cbRedirectHost.setModel(new DefaultComboBoxModel(ddhArray)); } } return cbRedirectHost; } private void updateValues() { if (this.currentHost != null) { DefaultComboBoxModel model = (DefaultComboBoxModel) this.getCbRedirectHost().getModel(); // remove current entry for (int i = (model.getSize() - 1); i >= 0; i--) { HostValue hostValue = (HostValue) ((DropDownHolder) model.getElementAt(i)).getObject(); if (hostValue != null && hostValue.getHostName().equalsIgnoreCase(this.currentHost.getHostName())) { model.removeElementAt(i); break; } } // select selected one, if any if (this.currentHost.getRedirectHostName() != null && this.currentHost.getRedirectHostName().length() > 0) { for (int i = (model.getSize() - 1); i >= 0; i--) { HostValue hostValue = (HostValue) ((DropDownHolder) model.getElementAt(i)).getObject(); if (hostValue != null && hostValue.getHostName().equalsIgnoreCase(this.currentHost.getRedirectHostName())) { model.setSelectedItem(model.getElementAt(i)); break; } } } this.getCbRedirectHost().setModel(model); this.getTxtRedirectUrl().setText(this.currentHost.getRedirectUrl()); } else { this.getTxtRedirectUrl().setText(""); } } private static Comparator localeSensitiveStringComparator = new Comparator() { public int compare(Object o1, Object o2) { String str1 = o1.toString(); String str2 = o2.toString(); Collator collator = Collator.getInstance(); int result = collator.compare(str1, str2); return result; } }; } // @jve:decl-index=0:visual-constraint="243,258"