[29] | 1 | /* |
---|
| 2 | * This program is free software; you can redistribute it and/or modify |
---|
| 3 | * it under the terms of the GNU General Public License as published by |
---|
| 4 | * the Free Software Foundation; either version 2 of the License, or |
---|
| 5 | * (at your option) any later version. |
---|
| 6 | * |
---|
| 7 | * This program is distributed in the hope that it will be useful, |
---|
| 8 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
---|
| 9 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
---|
| 10 | * GNU General Public License for more details. |
---|
| 11 | * |
---|
| 12 | * You should have received a copy of the GNU General Public License |
---|
| 13 | * along with this program; if not, write to the Free Software |
---|
| 14 | * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. |
---|
| 15 | */ |
---|
| 16 | |
---|
| 17 | /* |
---|
| 18 | * EnsembleSelectionLibraryEditor.java |
---|
| 19 | * Copyright (C) 2006 Robert Jung |
---|
| 20 | * |
---|
| 21 | */ |
---|
| 22 | |
---|
| 23 | package weka.gui; |
---|
| 24 | |
---|
| 25 | import weka.classifiers.meta.ensembleSelection.EnsembleSelectionLibrary; |
---|
| 26 | import weka.gui.ensembleLibraryEditor.AddModelsPanel; |
---|
| 27 | import weka.gui.ensembleLibraryEditor.DefaultModelsPanel; |
---|
| 28 | import weka.gui.ensembleLibraryEditor.ListModelsPanel; |
---|
| 29 | import weka.gui.ensembleLibraryEditor.LoadModelsPanel; |
---|
| 30 | |
---|
| 31 | import java.awt.BorderLayout; |
---|
| 32 | import java.awt.Component; |
---|
| 33 | import java.awt.Dimension; |
---|
| 34 | |
---|
| 35 | import javax.swing.JPanel; |
---|
| 36 | import javax.swing.JTabbedPane; |
---|
| 37 | |
---|
| 38 | /** |
---|
| 39 | * Class for editing Ensemble Library objects. This basically |
---|
| 40 | * does the same thing as its parent class except that it also |
---|
| 41 | * adds two extra panels. A "loadModelsPanel" to detect model |
---|
| 42 | * specifications from an ensemble working directory and a |
---|
| 43 | * "defaltModelsPanel" which lets you choose sets of model specs |
---|
| 44 | * from a few default lists. Brings up a custom editing |
---|
| 45 | * panel with which the user can edit the library interactively, as well |
---|
| 46 | * as save load libraries from files. |
---|
| 47 | * |
---|
| 48 | * @author Robert Jung (mrbobjung@gmail.com) |
---|
| 49 | * @version $Revision: 1.1 $ |
---|
| 50 | */ |
---|
| 51 | public class EnsembleSelectionLibraryEditor extends EnsembleLibraryEditor { |
---|
| 52 | |
---|
| 53 | /** An instance of the custom editor */ |
---|
| 54 | protected CustomEditor m_CustomEditor = new CustomEditor(); |
---|
| 55 | |
---|
| 56 | /** the panel showing models in a workingDirectory */ |
---|
| 57 | protected LoadModelsPanel m_LoadModelsPanel; |
---|
| 58 | |
---|
| 59 | /** The panel showing the defaults */ |
---|
| 60 | protected DefaultModelsPanel m_DefaultModelsPanel; |
---|
| 61 | |
---|
| 62 | /** |
---|
| 63 | * This class presents a GUI for editing the library, and saving and |
---|
| 64 | * loading model list from files. |
---|
| 65 | */ |
---|
| 66 | private class CustomEditor |
---|
| 67 | extends JPanel { |
---|
| 68 | |
---|
| 69 | /** for serialization */ |
---|
| 70 | private static final long serialVersionUID = -3859973750432725901L; |
---|
| 71 | |
---|
| 72 | /** |
---|
| 73 | * Constructs a new CustomEditor. |
---|
| 74 | * |
---|
| 75 | */ |
---|
| 76 | public CustomEditor() { |
---|
| 77 | |
---|
| 78 | m_ModelOptionsPane = new JTabbedPane(); |
---|
| 79 | |
---|
| 80 | m_ListModelsPanel = new ListModelsPanel(m_Library); |
---|
| 81 | m_ModelOptionsPane.addTab("Library List", m_ListModelsPanel); |
---|
| 82 | |
---|
| 83 | //Each of the three other panels needs a reference to the main one so that |
---|
| 84 | //they can add models to it. |
---|
| 85 | m_ModelOptionsPane.addTab("Add Models", new AddModelsPanel( |
---|
| 86 | m_ListModelsPanel)); |
---|
| 87 | |
---|
| 88 | m_DefaultModelsPanel = new DefaultModelsPanel(m_ListModelsPanel); |
---|
| 89 | m_ModelOptionsPane.addTab("Add Default Set", m_DefaultModelsPanel); |
---|
| 90 | m_ModelOptionsPane.addChangeListener(m_DefaultModelsPanel); |
---|
| 91 | |
---|
| 92 | m_LoadModelsPanel = new LoadModelsPanel(m_ListModelsPanel, |
---|
| 93 | EnsembleSelectionLibraryEditor.this); |
---|
| 94 | m_ModelOptionsPane.addTab("Load Models", m_LoadModelsPanel); |
---|
| 95 | m_ModelOptionsPane.addChangeListener(m_LoadModelsPanel); |
---|
| 96 | |
---|
| 97 | setLayout(new BorderLayout()); |
---|
| 98 | add(m_ModelOptionsPane, BorderLayout.CENTER); |
---|
| 99 | |
---|
| 100 | setPreferredSize(new Dimension(420, 500)); |
---|
| 101 | } |
---|
| 102 | } |
---|
| 103 | |
---|
| 104 | /** |
---|
| 105 | * Constructs a new LibraryEditor. |
---|
| 106 | * |
---|
| 107 | */ |
---|
| 108 | public EnsembleSelectionLibraryEditor() { |
---|
| 109 | super(); |
---|
| 110 | |
---|
| 111 | m_CustomEditor = new CustomEditor(); |
---|
| 112 | } |
---|
| 113 | |
---|
| 114 | /** |
---|
| 115 | * Sets the value of the Library to be edited. |
---|
| 116 | * |
---|
| 117 | * @param value a Library object to be edited |
---|
| 118 | */ |
---|
| 119 | public void setValue(Object value) { |
---|
| 120 | super.setValue(value); |
---|
| 121 | m_LoadModelsPanel.setLibrary((EnsembleSelectionLibrary) m_Library); |
---|
| 122 | |
---|
| 123 | ((EnsembleSelectionLibrary) m_Library) |
---|
| 124 | .addWorkingDirectoryListener(m_LoadModelsPanel); |
---|
| 125 | } |
---|
| 126 | |
---|
| 127 | /** |
---|
| 128 | * Gets a GUI component with which the user can edit the cost matrix. |
---|
| 129 | * |
---|
| 130 | * @return an editor GUI component |
---|
| 131 | */ |
---|
| 132 | public Component getCustomEditor() { |
---|
| 133 | return m_CustomEditor; |
---|
| 134 | } |
---|
| 135 | |
---|
| 136 | /** |
---|
| 137 | * returns whether or not the LoadModelsPanel is currently selected |
---|
| 138 | * |
---|
| 139 | * @return true if selected |
---|
| 140 | */ |
---|
| 141 | public boolean isLoadModelsPanelSelected() { |
---|
| 142 | return m_ModelOptionsPane.getSelectedComponent().equals( |
---|
| 143 | m_LoadModelsPanel); |
---|
| 144 | } |
---|
| 145 | } |
---|