Added possibility to update the main client GUI after changes made in the API
This commit is contained in:
parent
09ef318b93
commit
cf3e9aa7b9
@ -400,7 +400,16 @@ public class EvAClient implements RemoteStateListener, Serializable {
|
||||
m_LogPanel.logMessage("EvA2 ready"); // if this message is omitted, the stupid scroll pane runs to the end of the last line which is ugly for a long class path
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 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:
|
||||
* --autorun immediately starts the optimization (with parameters loaded from current
|
||||
|
@ -19,6 +19,7 @@ import java.io.Serializable;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import javax.swing.JComponent;
|
||||
import javax.swing.JPanel;
|
||||
import javax.swing.JTabbedPane;
|
||||
|
||||
@ -31,12 +32,17 @@ import eva2.server.go.problems.InterfaceAdditionalPopulationInformer;
|
||||
*/
|
||||
public class EvATabbedFrameMaker implements Serializable, PanelMaker, InterfaceNotifyOnInformers {
|
||||
private static final long serialVersionUID = 2637376545826821423L;
|
||||
private ArrayList<PanelMaker> guiContainer;
|
||||
private ArrayList<PanelMaker> pmContainer = null;
|
||||
private JExtToolBar m_BarStandard;
|
||||
EvAModuleButtonPanelMaker butPanelMkr=null;
|
||||
|
||||
public EvATabbedFrameMaker(ArrayList<PanelMaker> GUIContainer) {
|
||||
guiContainer = GUIContainer;
|
||||
public EvATabbedFrameMaker() {
|
||||
pmContainer = null;
|
||||
}
|
||||
|
||||
public void addPanelMaker(PanelMaker pm) {
|
||||
if (pmContainer==null) pmContainer = new ArrayList<PanelMaker>(2);
|
||||
pmContainer.add(pm);
|
||||
}
|
||||
|
||||
public JPanel makePanel() {
|
||||
@ -69,14 +75,15 @@ public class EvATabbedFrameMaker implements Serializable, PanelMaker, InterfaceN
|
||||
|
||||
m_BarStandard = new JExtToolBar();
|
||||
m_BarStandard.setFloatable(false);
|
||||
|
||||
for (int i=0;i<guiContainer.size();i++) {
|
||||
PanelMaker element = guiContainer.get(i);
|
||||
|
||||
for (int i=0;i<pmContainer.size();i++) {
|
||||
PanelMaker element = pmContainer.get(i);
|
||||
JComponent panel = element.makePanel();
|
||||
if (element instanceof EvAModuleButtonPanelMaker) {
|
||||
m_BarStandard.add(element.makePanel());
|
||||
m_BarStandard.add(panel);
|
||||
butPanelMkr=(EvAModuleButtonPanelMaker)element;
|
||||
} 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);
|
||||
@ -97,11 +104,17 @@ public class EvATabbedFrameMaker implements Serializable, PanelMaker, InterfaceN
|
||||
} 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(
|
||||
List<InterfaceAdditionalPopulationInformer> informers) {
|
||||
// if the informers have changed, update the GUI element which displays them
|
||||
try {
|
||||
JParaPanel statsPan = (JParaPanel) guiContainer.get(2);
|
||||
JParaPanel statsPan = (JParaPanel) pmContainer.get(2);
|
||||
if (statsPan.m_Editor!=null) {
|
||||
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!");
|
||||
|
@ -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)!");
|
||||
return null;
|
||||
}
|
||||
ArrayList<PanelMaker> GUIContainer = new ArrayList<PanelMaker>();
|
||||
EvATabbedFrameMaker frmMkr = new EvATabbedFrameMaker();
|
||||
|
||||
InterfaceStatisticsParameter Stat = ((StatisticsWithGUI)m_StatisticsModul).getStatisticsParameter();
|
||||
EvAModuleButtonPanelMaker ButtonPanel = new EvAModuleButtonPanelMaker(m_RemoteThis,((Processor)m_Processor).isOptRunning());
|
||||
ButtonPanel.setHelperFilename(helperFilename);
|
||||
GUIContainer.add(ButtonPanel);
|
||||
frmMkr.addPanelMaker(ButtonPanel);
|
||||
InterfaceGOParameters Para = ((Processor)m_Processor).getGOParams();
|
||||
if (TRACE) System.out.println("parameters are of type "+Para.getClass());
|
||||
// TODO do we really need proxies here?
|
||||
if (m_RMI && !Proxy.isProxyClass(Para.getClass())) GUIContainer.add(new JParaPanel( RMIProxyLocal.newInstance(Para), Para.getName()));
|
||||
else GUIContainer.add(new JParaPanel(Para, Para.getName()));
|
||||
if (m_RMI && !Proxy.isProxyClass(Stat.getClass())) GUIContainer.add(new JParaPanel( RMIProxyLocal.newInstance(Stat), Stat.getName()));
|
||||
else GUIContainer.add(new JParaPanel(Stat, Stat.getName()));
|
||||
if (m_RMI && !Proxy.isProxyClass(Para.getClass())) frmMkr.addPanelMaker(new JParaPanel( RMIProxyLocal.newInstance(Para), Para.getName()));
|
||||
else frmMkr.addPanelMaker(new JParaPanel(Para, Para.getName()));
|
||||
if (m_RMI && !Proxy.isProxyClass(Stat.getClass())) frmMkr.addPanelMaker(new JParaPanel( RMIProxyLocal.newInstance(Stat), Stat.getName()));
|
||||
else frmMkr.addPanelMaker(new JParaPanel(Stat, Stat.getName()));
|
||||
|
||||
EvATabbedFrameMaker frmMkr = new EvATabbedFrameMaker(GUIContainer);
|
||||
((Processor)m_Processor).getGOParams().addInformableInstance(frmMkr);
|
||||
return frmMkr;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user