001 /****************************************************************************** 002 * Copyright (C) MActor Developers. All rights reserved. * 003 * ---------------------------------------------------------------------------* 004 * This file is part of MActor. * 005 * * 006 * MActor is free software; you can redistribute it and/or modify * 007 * it under the terms of the GNU General Public License as published by * 008 * the Free Software Foundation; either version 2 of the License, or * 009 * (at your option) any later version. * 010 * * 011 * MActor is distributed in the hope that it will be useful, * 012 * but WITHOUT ANY WARRANTY; without even the implied warranty of * 013 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 014 * GNU General Public License for more details. * 015 * * 016 * You should have received a copy of the GNU General Public License * 017 * along with MActor; if not, write to the Free Software * 018 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * 019 ******************************************************************************/ 020 package org.mactor.ui.gui.project.editors; 021 022 import java.awt.Component; 023 import java.util.Iterator; 024 import java.util.LinkedList; 025 import java.util.List; 026 027 import javax.swing.JComboBox; 028 029 import org.dom4j.Document; 030 import org.dom4j.DocumentException; 031 import org.dom4j.Element; 032 import org.dom4j.io.SAXReader; 033 034 public class MessageBrokerImplementationsComboBox extends JComboBox { 035 private static List<String> impls; 036 public MessageBrokerImplementationsComboBox() { 037 addItem(null); 038 setAlignmentX(Component.LEFT_ALIGNMENT); 039 if (impls == null) { 040 impls = getImpls(); 041 } 042 if (impls != null) { 043 for (String impl : impls) { 044 addItem(impl); 045 } 046 } 047 } 048 private List<String> getImpls() { 049 List<String> l = new LinkedList<String>(); 050 try { 051 Document doc = new SAXReader().read(Thread.currentThread().getContextClassLoader().getResource("message_broker_impls.xml")); 052 Iterator typeIt = doc.getRootElement().elementIterator("impl"); 053 while (typeIt.hasNext()) { 054 Element e = (Element) typeIt.next(); 055 l.add(e.attributeValue("class")); 056 } 057 } catch (DocumentException de) { 058 de.printStackTrace(); 059 } 060 return l; 061 } 062 public String getSelectedImplementation() { 063 Object item = getSelectedItem(); 064 if (item == null) 065 return ""; 066 return (String) item; 067 } 068 public void getSelectedImplementation(String impl) { 069 int count = getItemCount(); 070 if (impl == null || impl.trim().length() == 0) { 071 setSelectedIndex(0); 072 return; 073 } 074 for (int i = 1; i < count; i++) { 075 String item = (String) getItemAt(i); 076 if (item.equals(impl)) { 077 setSelectedIndex(i); 078 return; 079 } 080 } 081 setSelectedIndex(0); 082 } 083 }