setLayout(new MigLayout("", "[][grow][]", "[][][][][grow]")); add(new JLabel(labelForField == null ? label : labelForField)); add(txt_file, "growx"); add(load, "wrap"); add(algorithmSelector, "skip, growx, spanx 2, wrap, wmin 100"); add(new JLabel("Description"), "top"); add(new JScrollPane(txt_description), "height 100::, spanx 2, grow, wrap"); add(new JLabel("Parameters"), "spanx 3, wrap"); add(parametersPanel, "spanx 3, grow"); checkFileChooser(currentFolder); getDefaults();
@Override public void actionPerformed(ActionEvent e) { if (algorithmSelector.getItemCount() == 0 || algorithmSelector.getSelectedIndex() == -1) return; try { File fileName = new File(txt_file.getText()); String className = (String) ((StringLabeller) algorithmSelector.getSelectedItem()).getObject(); Class<? extends IExternal> _class = implementations.get(className); IExternal instance = ClassLoaderUtils.getInstance(fileName, className, _class , null); String aux_description = instance.getDescription() == null ? "No description" : instance.getDescription(); List<Triple<String, String, String>> aux_parameters = instance.getParameters() == null ? new LinkedList<>() : instance.getParameters(); ((Closeable) instance.getClass().getClassLoader()).close(); txt_description.setText(aux_description); if (!txt_description.getText().isEmpty()) txt_description.setCaretPosition(0); parametersPanel.setParameters(aux_parameters); } catch (Throwable ex) { ex.printStackTrace(); ErrorHandling.showErrorDialog("Error selecting " + label.toLowerCase(getLocale())); } } });
private void getDefaults() { try { String defaultRunnableCodePath = Configuration.getOption("defaultRunnableCodePath"); File file = new File(defaultRunnableCodePath); if (!file.exists() || file.isDirectory()) return; if (file.getName().toLowerCase(Locale.getDefault()).endsWith(".jar") || file.getName().toLowerCase(Locale.getDefault()).endsWith(".class")) loadImplementations(file); } catch (Throwable e) { } }
@Override public Object execute(ThreadExecutionController controller) { Triple<File, String, Class> report = reportSelector.getRunnable(); Map<String, String> reportParameters = reportSelector.getRunnableParameters(); Map<String, String> net2planParameters = Configuration.getNet2PlanOptions(); IReport instance = ClassLoaderUtils.getInstance(report.getFirst(), report.getSecond(), IReport.class , null); String title = null; try { title = instance.getTitle(); } catch (UnsupportedOperationException ex) { } if (title == null) title = "Untitled"; Pair<String, ? extends JPanel> aux = Pair.of(title, new ReportBrowser(instance.executeReport(mainWindow.getDesign().copy(), reportParameters, net2planParameters))); try { ((Closeable) instance.getClass().getClassLoader()).close(); } catch (Throwable e) { } return aux; } @Override
RunnableSelector runnable = new RunnableSelector(runnableLabel, "File", runnableCodeType.getRunnableClass(), ALGORITHM_DIRECTORY, new ParameterValueDescriptionPanel()); runnable.setPreferredSize(new Dimension(640, 480)); Triple<File, String, Class> aux1 = runnable.getRunnable(); fileName = aux1.getFirst().getCanonicalPath(); algorithmName = aux1.getSecond(); algorithmParameters = StringUtils.mapToString(runnable.getRunnableParameters(), "=", ", "); } catch (Throwable e)
Triple<File, String, Class> aux = eventProcessorPanel.getRunnable(); IExternal eventProcessor = ClassLoaderUtils.getInstance(aux.getFirst(), aux.getSecond(), simKernel.getEventProcessorClass() , null); Map<String, String> eventProcessorParameters = eventProcessorPanel.getRunnableParameters(); simKernel.configureSimulation(simulationParameters, net2planParameters, eventGenerator, new HashMap<String, String>(), eventProcessor, eventProcessorParameters); simKernel.initialize(); eventProcessorPanel.setEnabled(true); this.notify(); // make the thread waiting for the simulation to finish to continue
public OfflineExecutionPanel (GUINetworkDesign mainWindow) { super (); this.mainWindow = mainWindow; setLayout(new MigLayout("insets 0 0 0 0", "[grow]", "[grow]")); File ALGORITHMS_DIRECTORY = new File(IGUIModule.CURRENT_DIR + SystemUtils.getDirectorySeparator() + "workspace"); ALGORITHMS_DIRECTORY = ALGORITHMS_DIRECTORY.isDirectory() ? ALGORITHMS_DIRECTORY : IGUIModule.CURRENT_DIR; ParameterValueDescriptionPanel algorithmParameters = new ParameterValueDescriptionPanel(); algorithmSelector = new RunnableSelector("Algorithm", null, IAlgorithm.class, ALGORITHMS_DIRECTORY, algorithmParameters); algorithmController = new ThreadExecutionController(this); JPanel pnl_buttons = new JPanel(new MigLayout("", "[center, grow]", "[]")); btn_solve = new JButton("Execute"); pnl_buttons.add(btn_solve); btn_solve.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { algorithmController.execute(); } }); add(algorithmSelector, "grow"); add(pnl_buttons, "dock south"); }
eventProcessorPanel.setEnabled(false); eventProcessorPanel.setEnabled(true); this.notify(); // make the thread waiting for the simulation to finish to continue eventProcessorPanel.setEnabled(true); this.notify(); // make the thread waiting for the simulation to finish to continue
public void reset () { algorithmSelector.reset(); }
/** * Resets the component. * * @since 0.2.0 */ public void reset() { algorithmSelector.removeAllItems(); txt_file.setText(""); txt_description.setText(""); parametersPanel.reset(); getDefaults(); }
model.setValueAt(current.getRunnable().getFirst().getCanonicalPath(), rowModel, 1); model.setValueAt(current.getRunnable().getSecond(), rowModel + 1, 1); model.setValueAt(StringUtils.mapToString(current.getRunnableParameters(), "=", ", "), rowModel + 2, 1);
ALGORITHMS_DIRECTORY = ALGORITHMS_DIRECTORY.isDirectory() ? ALGORITHMS_DIRECTORY : IGUIModule.CURRENT_DIR; eventProcessorPanel = new RunnableSelector(SimKernel.getEventProcessorLabel(), "File", simKernel.getEventProcessorClass(), ALGORITHMS_DIRECTORY, new ParameterValueDescriptionPanel());
@Override public void actionPerformed(ActionEvent e) { final Object src = e.getSource(); if (src == btn_whatIfActivated) { final VisualizationState vs = callback.getVisualizationState(); if (callback.inOnlineSimulationMode()) btn_whatIfActivated.setSelected(false); vs.setWhatIfAnalysisActive(btn_whatIfActivated.isSelected()); eventProcessorPanel.setEnabled(btn_whatIfActivated.isSelected()); } }
@Override public Object execute(ThreadExecutionController controller) { start = System.nanoTime(); final Triple<File, String, Class> algorithm = algorithmSelector.getRunnable(); final Map<String, String> algorithmParameters = algorithmSelector.getRunnableParameters(); Configuration.updateSolverLibraryNameParameter(algorithmParameters); // put default path to libraries if solverLibraryName is "" final Map<String, String> net2planParameters = Configuration.getNet2PlanOptions(); NetPlan netPlan = mainWindow.getDesign().copy(); IAlgorithm instance = ClassLoaderUtils.getInstance(algorithm.getFirst(), algorithm.getSecond(), IAlgorithm.class , null); // System.out.println ("BEFORE EXECUTING"); String out = instance.executeAlgorithm(netPlan, algorithmParameters, net2planParameters); // System.out.println ("AFTER EXECUTING"); try { ((Closeable) instance.getClass().getClassLoader()).close(); } catch (Throwable e) { } netPlan.setNetworkLayerDefault(netPlan.getNetworkLayer((int) 0)); mainWindow.getDesign().assignFrom(netPlan); // do not update undo/redo here -> the visualization state should be updated before return out; }
REPORTS_DIRECTORY = REPORTS_DIRECTORY.isDirectory() ? REPORTS_DIRECTORY : IGUIModule.CURRENT_DIR; ParameterValueDescriptionPanel reportParameters = new ParameterValueDescriptionPanel(); reportSelector = new RunnableSelector("Report", null, IReport.class, REPORTS_DIRECTORY, reportParameters); reportContainer = new JTabbedPane();
public void simulationStateChanged(SimCore.SimState simulationState, Throwable reason) { simulationConfigurationPanel.setEnabled(false); eventGeneratorPanel.setEnabled(false); eventProcessorPanel.setEnabled(false); eventGeneratorPanel.setEnabled(true); eventProcessorPanel.setEnabled(true);
Map<String, String> net2planParameters = Configuration.getNet2PlanOptions(); final Triple<File, String, Class> eventGeneratorInfo = eventGeneratorPanel.getRunnable(); final Triple<File, String, Class> eventProcessorInfo = eventProcessorPanel.getRunnable(); final IExternal eventProcessor = ClassLoaderUtils.getInstance(eventProcessorInfo.getFirst(), eventProcessorInfo.getSecond(), simKernel.getEventProcessorClass() , ucl); final Map<String, String> eventGeneratorParameters = eventGeneratorPanel.getRunnableParameters(); final Map<String, String> eventProcessorParameters = eventProcessorPanel.getRunnableParameters(); simKernel.configureSimulation(simulationParameters, net2planParameters, eventGenerator, eventGeneratorParameters, eventProcessor, eventProcessorParameters); simKernel.initialize();
ALGORITHMS_DIRECTORY = ALGORITHMS_DIRECTORY.isDirectory() ? ALGORITHMS_DIRECTORY : IGUIModule.CURRENT_DIR; eventGeneratorPanel = new RunnableSelector(SimKernel.getEventGeneratorLabel(), "File", simKernel.getEventGeneratorClass(), ALGORITHMS_DIRECTORY, new ParameterValueDescriptionPanel()); eventProcessorPanel = new RunnableSelector(SimKernel.getEventProcessorLabel(), "File", simKernel.getEventProcessorClass(), ALGORITHMS_DIRECTORY, new ParameterValueDescriptionPanel());