Added possibility to update the main client GUI after changes made in the API

This commit is contained in:
Marcel Kronfeld 2010-09-02 13:35:05 +00:00
parent 09ef318b93
commit cf3e9aa7b9
3 changed files with 39 additions and 17 deletions

View File

@ -401,6 +401,15 @@ public class EvAClient implements RemoteStateListener, Serializable {
} }
} }
/**
* Refresh the parameter panels (if settings have been changed outside
* of the GUI which should be updated in the GUI.
*
*/
public void refreshMainPanels() {
frmMkr.refreshPanels();
}
/** /**
* The one and only main of the client program. Possible arguments: * The one and only main of the client program. Possible arguments:
* --autorun immediately starts the optimization (with parameters loaded from current * --autorun immediately starts the optimization (with parameters loaded from current

View File

@ -19,6 +19,7 @@ import java.io.Serializable;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import javax.swing.JComponent;
import javax.swing.JPanel; import javax.swing.JPanel;
import javax.swing.JTabbedPane; import javax.swing.JTabbedPane;
@ -31,12 +32,17 @@ import eva2.server.go.problems.InterfaceAdditionalPopulationInformer;
*/ */
public class EvATabbedFrameMaker implements Serializable, PanelMaker, InterfaceNotifyOnInformers { public class EvATabbedFrameMaker implements Serializable, PanelMaker, InterfaceNotifyOnInformers {
private static final long serialVersionUID = 2637376545826821423L; private static final long serialVersionUID = 2637376545826821423L;
private ArrayList<PanelMaker> guiContainer; private ArrayList<PanelMaker> pmContainer = null;
private JExtToolBar m_BarStandard; private JExtToolBar m_BarStandard;
EvAModuleButtonPanelMaker butPanelMkr=null; EvAModuleButtonPanelMaker butPanelMkr=null;
public EvATabbedFrameMaker(ArrayList<PanelMaker> GUIContainer) { public EvATabbedFrameMaker() {
guiContainer = GUIContainer; pmContainer = null;
}
public void addPanelMaker(PanelMaker pm) {
if (pmContainer==null) pmContainer = new ArrayList<PanelMaker>(2);
pmContainer.add(pm);
} }
public JPanel makePanel() { public JPanel makePanel() {
@ -70,13 +76,14 @@ public class EvATabbedFrameMaker implements Serializable, PanelMaker, InterfaceN
m_BarStandard = new JExtToolBar(); m_BarStandard = new JExtToolBar();
m_BarStandard.setFloatable(false); m_BarStandard.setFloatable(false);
for (int i=0;i<guiContainer.size();i++) { for (int i=0;i<pmContainer.size();i++) {
PanelMaker element = guiContainer.get(i); PanelMaker element = pmContainer.get(i);
JComponent panel = element.makePanel();
if (element instanceof EvAModuleButtonPanelMaker) { if (element instanceof EvAModuleButtonPanelMaker) {
m_BarStandard.add(element.makePanel()); m_BarStandard.add(panel);
butPanelMkr=(EvAModuleButtonPanelMaker)element; butPanelMkr=(EvAModuleButtonPanelMaker)element;
} else if (element instanceof JParaPanel) { } else if (element instanceof JParaPanel) {
m_MainPanel.addTab (((JParaPanel)element).getName(), element.makePanel()); m_MainPanel.addTab (((JParaPanel)element).getName(), panel);
} }
} }
m_SuperPanel.add(m_MainPanel, gbconst); m_SuperPanel.add(m_MainPanel, gbconst);
@ -97,11 +104,17 @@ public class EvATabbedFrameMaker implements Serializable, PanelMaker, InterfaceN
} else System.err.println("Error: button panel was null (EvATabbedFrameMaker)"); } else System.err.println("Error: button panel was null (EvATabbedFrameMaker)");
} }
public void refreshPanels() {
for (PanelMaker jpp : pmContainer) {
if (jpp instanceof JParaPanel) ((JParaPanel)jpp).m_Editor.setValue(((JParaPanel)jpp).m_Editor.getValue());
}
}
public void setInformers( public void setInformers(
List<InterfaceAdditionalPopulationInformer> informers) { List<InterfaceAdditionalPopulationInformer> informers) {
// if the informers have changed, update the GUI element which displays them // if the informers have changed, update the GUI element which displays them
try { try {
JParaPanel statsPan = (JParaPanel) guiContainer.get(2); JParaPanel statsPan = (JParaPanel) pmContainer.get(2);
if (statsPan.m_Editor!=null) { if (statsPan.m_Editor!=null) {
statsPan.m_Editor.setValue(statsPan.m_Editor.getValue()); // really update the contents of the stats panel statsPan.m_Editor.setValue(statsPan.m_Editor.getValue()); // really update the contents of the stats panel
// System.out.println("OOO setting informers to stats panel succeeded!"); // System.out.println("OOO setting informers to stats panel succeeded!");

View File

@ -81,20 +81,20 @@ public class GenericModuleAdapter extends AbstractModuleAdapter implements Seria
System.err.println("Error: Unable to create Frame when startet with noGUI option (GenericModuleAdapter)!"); System.err.println("Error: Unable to create Frame when startet with noGUI option (GenericModuleAdapter)!");
return null; return null;
} }
ArrayList<PanelMaker> GUIContainer = new ArrayList<PanelMaker>(); EvATabbedFrameMaker frmMkr = new EvATabbedFrameMaker();
InterfaceStatisticsParameter Stat = ((StatisticsWithGUI)m_StatisticsModul).getStatisticsParameter(); InterfaceStatisticsParameter Stat = ((StatisticsWithGUI)m_StatisticsModul).getStatisticsParameter();
EvAModuleButtonPanelMaker ButtonPanel = new EvAModuleButtonPanelMaker(m_RemoteThis,((Processor)m_Processor).isOptRunning()); EvAModuleButtonPanelMaker ButtonPanel = new EvAModuleButtonPanelMaker(m_RemoteThis,((Processor)m_Processor).isOptRunning());
ButtonPanel.setHelperFilename(helperFilename); ButtonPanel.setHelperFilename(helperFilename);
GUIContainer.add(ButtonPanel); frmMkr.addPanelMaker(ButtonPanel);
InterfaceGOParameters Para = ((Processor)m_Processor).getGOParams(); InterfaceGOParameters Para = ((Processor)m_Processor).getGOParams();
if (TRACE) System.out.println("parameters are of type "+Para.getClass()); if (TRACE) System.out.println("parameters are of type "+Para.getClass());
// TODO do we really need proxies here? // TODO do we really need proxies here?
if (m_RMI && !Proxy.isProxyClass(Para.getClass())) GUIContainer.add(new JParaPanel( RMIProxyLocal.newInstance(Para), Para.getName())); if (m_RMI && !Proxy.isProxyClass(Para.getClass())) frmMkr.addPanelMaker(new JParaPanel( RMIProxyLocal.newInstance(Para), Para.getName()));
else GUIContainer.add(new JParaPanel(Para, Para.getName())); else frmMkr.addPanelMaker(new JParaPanel(Para, Para.getName()));
if (m_RMI && !Proxy.isProxyClass(Stat.getClass())) GUIContainer.add(new JParaPanel( RMIProxyLocal.newInstance(Stat), Stat.getName())); if (m_RMI && !Proxy.isProxyClass(Stat.getClass())) frmMkr.addPanelMaker(new JParaPanel( RMIProxyLocal.newInstance(Stat), Stat.getName()));
else GUIContainer.add(new JParaPanel(Stat, Stat.getName())); else frmMkr.addPanelMaker(new JParaPanel(Stat, Stat.getName()));
EvATabbedFrameMaker frmMkr = new EvATabbedFrameMaker(GUIContainer);
((Processor)m_Processor).getGOParams().addInformableInstance(frmMkr); ((Processor)m_Processor).getGOParams().addInformableInstance(frmMkr);
return frmMkr; return frmMkr;
} }