List of usage examples for javax.swing.event ChangeListener ChangeListener
ChangeListener
From source file:com.nikonhacker.gui.EmulatorUI.java
private JSlider makeSlider(int chip) { intervalSlider[chip] = new JSlider(JSlider.HORIZONTAL, 0, 5, prefs.getSleepTick(chip)); intervalSlider[chip].addChangeListener(new ChangeListener() { /**/* w w w .ja v a 2 s . c om*/ * React to slider moves * @param e */ @Override public void stateChanged(ChangeEvent e) { JSlider source = (JSlider) e.getSource(); // if (!source.getValueIsAdjusting()) for (int chip = 0; chip < 2; chip++) { if (source == intervalSlider[chip]) { setEmulatorSleepCode(chip, source.getValue()); prefs.setSleepTick(chip, source.getValue()); } } } }); intervalSlider[chip].putClientProperty("JComponent.sizeVariant", "large"); //Create the label table Hashtable<Integer, JLabel> labelTable = new Hashtable<Integer, JLabel>(); labelTable.put(0, getSmallLabel("0")); labelTable.put(1, getSmallLabel("1ms")); labelTable.put(2, getSmallLabel("10ms")); labelTable.put(3, getSmallLabel("0.1s")); labelTable.put(4, getSmallLabel("1s")); labelTable.put(5, getSmallLabel("10s")); intervalSlider[chip].setLabelTable(labelTable); //Turn on labels at major tick marks. intervalSlider[chip].setMajorTickSpacing(1); intervalSlider[chip].setPaintLabels(true); intervalSlider[chip].setPaintTicks(true); intervalSlider[chip].setSnapToTicks(true); intervalSlider[chip].setBorder(BorderFactory.createEmptyBorder(0, 0, 10, 0)); intervalSlider[chip].setMaximumSize(new Dimension(400, 50)); return intervalSlider[chip]; }
From source file:windows.sensorWindow.java
/** * window constructor for chart window// w w w . jav a 2s . com * * @param title * title for the new window */ public sensorWindow(final String title) { super(title); System.out.println("create sensorWindow"); // font customizing // ------------------------------------------------------- /* * Font font1 = null; try { font1 = Font.createFont(Font.TRUETYPE_FONT, * new File("U:/workspace/SWTtest/fonts/roboto/Roboto-Black.ttf")); } * catch (FontFormatException | IOException e1) { e1.printStackTrace(); * } StandardChartTheme chartTheme = new * StandardChartTheme("robotTheme"); * chartTheme.setExtraLargeFont(font1.deriveFont(24f)); * chartTheme.setLargeFont(font1.deriveFont(16f)); * chartTheme.setRegularFont(font1.deriveFont(12f)); * chartTheme.setSmallFont(font1.deriveFont(10f)); * ChartFactory.setChartTheme(chartTheme); */ Font font1 = new Font("Tahoma", Font.BOLD, 16); Font font2 = new Font("Tahoma", Font.PLAIN, 12); Font font3 = new Font("Tahoma", Font.BOLD, 16); customFonts.put("axisLabelFont", font1); customFonts.put("axisValueFont", font2); customFonts.put("titleFont", font3); // ------------------------------------------------------------------------- this.setDefaultCloseOperation(DO_NOTHING_ON_CLOSE); setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); plot = new CombinedDomainXYPlot(new DateAxis("Time")); for (int i = 0; i < connectionData.presentedBrickList.size(); i++) { Brick tmpBrick = connectionData.presentedBrickList.get(i); addPlot(tmpBrick); } final JFreeChart chart = new JFreeChart("", plot); // chart.setBorderPaint(Color.black); // chart.setBorderVisible(true); // chart.setBackgroundPaint(Color.white); chart.removeLegend(); plot.setBackgroundPaint(Color.lightGray); plot.setDomainGridlinePaint(Color.white); plot.setRangeGridlinePaint(Color.white); // plot.setRenderer(renderer2); // plot.setAxisOffset(new Spacer(Spacer.ABSOLUTE, 4, 4, 4, 4)); final ValueAxis axis = plot.getDomainAxis(); axis.setAutoRange(true); axis.setFixedAutoRange(chartRangeSec * 1000); // chart range seconds axis.setLabelFont(customFonts.get("axisLabelFont")); axis.setTickLabelFont(customFonts.get("axisValueFont")); //final JPanel content = new JPanel(new BorderLayout()); content = new JPanel(new BorderLayout()); JScrollPane scrollPane = new JScrollPane(); JViewport viewport = scrollPane.getViewport(); viewport.setView(content); final ChartPanel chartPanel = new ChartPanel(chart); content.add(chartPanel, BorderLayout.NORTH); // content.add(getScrollBar(xAxe), BorderLayout.SOUTH); // disable zoom chartPanel.setRangeZoomable(false); chartPanel.setDomainZoomable(false); // mouse selection chartPanel.addMouseListener(new MouseMarker(chartPanel)); chartPanel.setPreferredSize(new java.awt.Dimension(500, 470)); // chartPanel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5)); // setContentPane(content); // =================================================== // buttons buttonPanel = new JPanel(new FlowLayout()); for (int i = 0; i < connectionData.presentedBrickList.size(); i++) { for (int i2 = 0; i2 < 2; i2++) { Brick tmpBrick = connectionData.presentedBrickList.get(i); JButton button = new JButton(tmpBrick.uid + " start"); button.setActionCommand(buttonComAddBtn + tmpBrick.uid + i + "(" + i2 + ")"); button.addActionListener(this); tmplButtons.put(tmpBrick.uid, button); // if ((tmpBrick.ctrlTmpl[0]) || (tmpBrick.ctrlTmpl[1])) // { // buttonPanel.add(button); // } changeTmplCntrl(tmpBrick, i2); } } content.add(buttonPanel, BorderLayout.SOUTH); // =================================================== // =================================================== // scroll bar final JPanel sliderPanel = new JPanel(new FlowLayout()); slider = new JSlider(1, sliderValuesNumber); slider.setValue(sliderValuesNumber); slider.setEnabled(false); slider.addChangeListener(new ChangeListener() { @Override public void stateChanged(ChangeEvent e) { if (sliderData.sliderActive == true) { int sliderValue = slider.getValue(); if (sliderValue == sliderValuesNumber) sliderUpdate = true; else sliderUpdate = false; /* System.out.println("slider : " + sliderValue); System.out.println("Millis first: " + sliderData.getMilliseconds( sliderValue - sliderValuesNumber) .toString()); System.out.println("Millis last : " + sliderData.getMilliseconds(sliderValue) .toString()); */ DateRange range = new DateRange( sliderData.getMilliseconds(sliderValue - sliderValuesNumber).getFirstMillisecond(), sliderData.getMilliseconds(sliderValue).getFirstMillisecond()); plot.getDomainAxis().setRange(range); } } }); sliderPanel.add(slider); // chartPanel.add(slider); /* * final Panel chartPanel2 = new Panel(); chartPanel2.add(slider); * content.add(chartPanel2, BorderLayout.SOUTH); */ content.add(sliderPanel, BorderLayout.CENTER); // =================================================== // =================================================== // scrolling /* * String[] data = {"one", "two", "three", "four", "five", "six", * "seven", "eight", "nine", "ten"}; JList list = new JList(data); * * // give the list some scrollbars. // the horizontal (bottom) * scrollbar will only appear // when the screen is too wide. The * vertical // scrollbar is always present, but disabled if the // list * is small. JScrollPane jsp = new JScrollPane(list, * JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, * JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); * * // add the JScrollPane (not the list) to the window. * getContentPane().add(jsp, BorderLayout.CENTER); */ // ================================================== setContentPane(content); this.addComponentListener(new java.awt.event.ComponentAdapter() { public void componentResized(java.awt.event.ComponentEvent e) { chartPanel.setMaximumDrawWidth((int) e.getComponent().getSize().getWidth()); chartPanel.setMaximumDrawHeight((int) e.getComponent().getSize().getHeight()); //chartPanel.setPreferredSize(e.getComponent().getPreferredSize()); //chartPanel.setSize(e.getComponent().getSize()); //chartPanel.setLocation(0,0); } }); // start auto update plot autoUpdatePlot(); this.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.out.println("close sensor window"); functions.windowController.closeSensorWindow(); } }); }
From source file:ca.phon.ipamap.IpaMap.java
/** * Create the context menu based on source component *//*from w w w . j ava 2 s.c om*/ public void setupContextMenu(JPopupMenu menu, JComponent comp) { final CommonModuleFrame parentFrame = (CommonModuleFrame) SwingUtilities .getAncestorOfClass(CommonModuleFrame.class, comp); if (parentFrame != null) { final PhonUIAction toggleAlwaysOnTopAct = new PhonUIAction(parentFrame, "setAlwaysOnTop", !parentFrame.isAlwaysOnTop()); toggleAlwaysOnTopAct.putValue(PhonUIAction.NAME, "Always on top"); toggleAlwaysOnTopAct.putValue(PhonUIAction.SELECTED_KEY, parentFrame.isAlwaysOnTop()); final JCheckBoxMenuItem toggleAlwaysOnTopItem = new JCheckBoxMenuItem(toggleAlwaysOnTopAct); menu.add(toggleAlwaysOnTopItem); } // button options first if (comp instanceof CellButton) { CellButton btn = (CellButton) comp; Cell cell = btn.cell; // copy to clipboard options String cellData = cell.getText().replaceAll("" + (char) 0x25cc, ""); PhonUIAction copyToClipboardAct = new PhonUIAction(this, "onCopyToClipboard", cellData); copyToClipboardAct.putValue(PhonUIAction.NAME, "Copy character (" + cell.getText() + ")"); JMenuItem copyToClipboardItem = new JMenuItem(copyToClipboardAct); menu.add(copyToClipboardItem); String htmlVal = new String(); for (Character c : cellData.toCharArray()) { htmlVal += "&#" + (int) c + ";"; } PhonUIAction copyHTMLToClipboardAct = new PhonUIAction(this, "onCopyToClipboard", htmlVal); copyHTMLToClipboardAct.putValue(PhonUIAction.NAME, "Copy as HTML (" + htmlVal + ")"); JMenuItem copyHTMLToClipboardItem = new JMenuItem(copyHTMLToClipboardAct); menu.add(copyHTMLToClipboardItem); String hexVal = new String(); for (Character c : cellData.toCharArray()) { hexVal += (hexVal.length() > 0 ? " " : "") + Integer.toHexString((int) c); } hexVal = hexVal.toUpperCase(); PhonUIAction copyHEXToClipboardAct = new PhonUIAction(this, "onCopyToClipboard", hexVal); copyHEXToClipboardAct.putValue(PhonUIAction.NAME, "Copy as Unicode HEX (" + hexVal + ")"); JMenuItem copyHEXToClipboardItem = new JMenuItem(copyHEXToClipboardAct); menu.add(copyHEXToClipboardItem); menu.addSeparator(); if (isInFavorites(cell)) { PhonUIAction removeFromFavAct = new PhonUIAction(this, "onRemoveCellFromFavorites", cell); removeFromFavAct.putValue(Action.NAME, "Remove from favorites"); removeFromFavAct.putValue(Action.SHORT_DESCRIPTION, "Remove button from list of favorites"); JMenuItem removeFromFavItem = new JMenuItem(removeFromFavAct); menu.add(removeFromFavItem); } else { PhonUIAction addToFavAct = new PhonUIAction(this, "onAddCellToFavorites", cell); addToFavAct.putValue(Action.NAME, "Add to favorites"); addToFavAct.putValue(Action.SHORT_DESCRIPTION, "Add button to list of favorites"); JMenuItem addToFavItem = new JMenuItem(addToFavAct); menu.add(addToFavItem); } menu.addSeparator(); } // section scroll-tos JMenuItem gotoTitleItem = new JMenuItem("Scroll to:"); gotoTitleItem.setEnabled(false); menu.add(gotoTitleItem); for (JXButton toggleBtn : toggleButtons) { PhonUIAction gotoAct = new PhonUIAction(this, "onGoto", toggleBtn); gotoAct.putValue(Action.NAME, toggleBtn.getText()); gotoAct.putValue(Action.SHORT_DESCRIPTION, "Scroll to " + toggleBtn.getText()); JMenuItem gotoItem = new JMenuItem(gotoAct); menu.add(gotoItem); } menu.addSeparator(); // setup font scaler final JLabel smallLbl = new JLabel("A"); smallLbl.setFont(getFont().deriveFont(12.0f)); smallLbl.setHorizontalAlignment(SwingConstants.CENTER); JLabel largeLbl = new JLabel("A"); largeLbl.setFont(getFont().deriveFont(24.0f)); largeLbl.setHorizontalAlignment(SwingConstants.CENTER); final JSlider scaleSlider = new JSlider(1, 101); scaleSlider.setValue((int) (scale * 100)); scaleSlider.setMajorTickSpacing(20); scaleSlider.setMinorTickSpacing(10); scaleSlider.setSnapToTicks(true); scaleSlider.setPaintTicks(true); scaleSlider.addChangeListener(new ChangeListener() { @Override public void stateChanged(ChangeEvent arg0) { int sliderVal = scaleSlider.getValue(); float scale = (float) sliderVal / (float) 100; _cFont = null; setSavedScale(scale); setScale(scale); } }); FormLayout scaleLayout = new FormLayout("3dlu, center:pref, fill:pref:grow, center:pref, 3dlu", "pref"); CellConstraints cc = new CellConstraints(); JPanel scalePanel = new JPanel(scaleLayout) { @Override public Insets getInsets() { Insets retVal = super.getInsets(); retVal.left += UIManager.getIcon("Tree.collapsedIcon").getIconWidth(); return retVal; } }; scalePanel.add(smallLbl, cc.xy(2, 1)); scalePanel.add(scaleSlider, cc.xy(3, 1)); scalePanel.add(largeLbl, cc.xy(4, 1)); JMenuItem scaleItem = new JMenuItem("Font size"); scaleItem.setEnabled(false); menu.add(scaleItem); menu.add(scalePanel); menu.addSeparator(); // highlighting PhonUIAction onToggleHighlightAct = new PhonUIAction(this, "onToggleHighlightRecent"); onToggleHighlightAct.putValue(PhonUIAction.NAME, "Highlight recently used"); onToggleHighlightAct.putValue(PhonUIAction.SELECTED_KEY, isHighlightRecent()); JCheckBoxMenuItem onToggleHighlightItm = new JCheckBoxMenuItem(onToggleHighlightAct); menu.add(onToggleHighlightItm); }
From source file:FirstForm.java
private void initSliders() { velocidadSlider.addChangeListener(new ChangeListener() { @Override/* w ww. j a v a 2 s .c om*/ public void stateChanged(ChangeEvent e) { if (moduladoraThread != null) moduladoraThread.changeTime(500 - velocidadSlider.getValue()); if (moduladaThread != null) moduladaThread.changeTime(500 - velocidadSlider.getValue()); if (portadoraThread != null) portadoraThread.changeTime(500 - velocidadSlider.getValue()); } }); framesSlider.addChangeListener(new ChangeListener() { @Override public void stateChanged(ChangeEvent e) { if (moduladoraThread != null) moduladoraThread.changeFrames(framesSlider.getValue()); if (moduladaThread != null) moduladaThread.changeFrames(framesSlider.getValue()); if (portadoraThread != null) portadoraThread.changeFrames(framesSlider.getValue()); } }); velocidadSlider.setMinimum(0); velocidadSlider.setMaximum(420); framesSlider.setMaximum(500); framesSlider.setMinimum(200); velocidadSlider.setValue(350); framesSlider.setValue(225); }
From source file:course_generator.frmMain.java
/** * This method is called to initialize the form. *//*from ww w . j a v a2 s. co m*/ private void initComponents() { // -- Main windows // ------------------------------------------------------ setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); // java.util.ResourceBundle bundle = // java.util.ResourceBundle.getBundle("course_generator/Bundle"); setTitle(bundle.getString("frmMain.title")); setIconImages(null); // setName("FrameMain"); // setPreferredSize(new java.awt.Dimension(812, 800)); addWindowListener(new java.awt.event.WindowAdapter() { public void windowClosing(java.awt.event.WindowEvent evt) { formWindowClosing(evt); } }); // -- Layout // ------------------------------------------------------------ Container paneGlobal = getContentPane(); // paneGlobal.setLayout(new GridBagLayout()); paneGlobal.setLayout(new BorderLayout()); // -- Menu bar // ---------------------------------------------------------- Create_MenuBarMain(); // -- Main toolbar // ------------------------------------------------------ Create_MainToolbar(); paneGlobal.add(ToolBarMain, BorderLayout.NORTH); // -- Status bar // ------------------------------------------------------ Create_Statusbar(); paneGlobal.add(StatusBar, BorderLayout.SOUTH); // -- Main split bar (vertical) // ----------------------------------------- SplitPaneMain = new javax.swing.JSplitPane(); paneGlobal.add(SplitPaneMain, BorderLayout.CENTER); // -- Left side of the split bar // ---------------------------------------- jPanelLeft = new javax.swing.JPanel(); jPanelLeft.setLayout(new java.awt.BorderLayout()); // -- Add the left panel to the main split panel // ------------------------ SplitPaneMain.setLeftComponent(jPanelLeft); // -- Content of the tree javax.swing.tree.DefaultMutableTreeNode treeNode1 = new javax.swing.tree.DefaultMutableTreeNode( "Course Generator"); javax.swing.tree.DefaultMutableTreeNode treeNode2 = new javax.swing.tree.DefaultMutableTreeNode("Parcours"); javax.swing.tree.DefaultMutableTreeNode treeNode3 = new javax.swing.tree.DefaultMutableTreeNode( "Utmb 2011"); javax.swing.tree.DefaultMutableTreeNode treeNode4 = new javax.swing.tree.DefaultMutableTreeNode("Prvu"); treeNode3.add(treeNode4); treeNode4 = new javax.swing.tree.DefaultMutableTreeNode("Fait"); treeNode3.add(treeNode4); treeNode2.add(treeNode3); treeNode3 = new javax.swing.tree.DefaultMutableTreeNode("Montagnard"); treeNode4 = new javax.swing.tree.DefaultMutableTreeNode("Prvu"); treeNode3.add(treeNode4); treeNode4 = new javax.swing.tree.DefaultMutableTreeNode("Fait"); treeNode3.add(treeNode4); treeNode2.add(treeNode3); treeNode3 = new javax.swing.tree.DefaultMutableTreeNode("UCDHL2008"); treeNode4 = new javax.swing.tree.DefaultMutableTreeNode("Prvu"); treeNode3.add(treeNode4); treeNode4 = new javax.swing.tree.DefaultMutableTreeNode("Fait"); treeNode3.add(treeNode4); treeNode2.add(treeNode3); treeNode3 = new javax.swing.tree.DefaultMutableTreeNode("UCDHL2009"); treeNode4 = new javax.swing.tree.DefaultMutableTreeNode("Prvu"); treeNode3.add(treeNode4); treeNode4 = new javax.swing.tree.DefaultMutableTreeNode("Fait"); treeNode3.add(treeNode4); treeNode2.add(treeNode3); treeNode3 = new javax.swing.tree.DefaultMutableTreeNode("UCDHL2010"); treeNode4 = new javax.swing.tree.DefaultMutableTreeNode("Prvu"); treeNode3.add(treeNode4); treeNode4 = new javax.swing.tree.DefaultMutableTreeNode("Fait"); treeNode3.add(treeNode4); treeNode2.add(treeNode3); treeNode3 = new javax.swing.tree.DefaultMutableTreeNode("UCDHL2011"); treeNode4 = new javax.swing.tree.DefaultMutableTreeNode("Prvu"); treeNode3.add(treeNode4); treeNode4 = new javax.swing.tree.DefaultMutableTreeNode("Fait"); treeNode3.add(treeNode4); treeNode2.add(treeNode3); treeNode3 = new javax.swing.tree.DefaultMutableTreeNode("UCDHL2012"); treeNode4 = new javax.swing.tree.DefaultMutableTreeNode("Prvu"); treeNode3.add(treeNode4); treeNode4 = new javax.swing.tree.DefaultMutableTreeNode("Fait"); treeNode3.add(treeNode4); treeNode2.add(treeNode3); treeNode3 = new javax.swing.tree.DefaultMutableTreeNode("UCDHL2013"); treeNode4 = new javax.swing.tree.DefaultMutableTreeNode("Prvu"); treeNode3.add(treeNode4); treeNode4 = new javax.swing.tree.DefaultMutableTreeNode("Fait"); treeNode3.add(treeNode4); treeNode2.add(treeNode3); treeNode1.add(treeNode2); treeNode2 = new javax.swing.tree.DefaultMutableTreeNode("Configuration"); treeNode1.add(treeNode2); // -- Tree // -------------------------------------------------------------- jTreeMain = new javax.swing.JTree(); jTreeMain.setModel(new javax.swing.tree.DefaultTreeModel(treeNode1)); jTreeMain.setPreferredSize(new java.awt.Dimension(109, 25)); // -- Add the tree to a scroll panel // ------------------------------------ jScrollPaneTree = new javax.swing.JScrollPane(); jScrollPaneTree.setBorder(javax.swing.BorderFactory.createEtchedBorder()); jScrollPaneTree.setViewportView(jTreeMain); // -- Add the scroll panel to the left panel // ---------------------------- jPanelLeft.add(jScrollPaneTree, java.awt.BorderLayout.CENTER); // -- Right split pane // -------------------------------------------------- SplitPaneMainRight = new javax.swing.JSplitPane(); SplitPaneMainRight.setOrientation(javax.swing.JSplitPane.VERTICAL_SPLIT); SplitPaneMain.setRightComponent(SplitPaneMainRight); // -- Tabbed panel // ------------------------------------------------------ TabbedPaneMain = new javax.swing.JTabbedPane(); // -- Create the listener ChangeListener changeListener = new ChangeListener() { public void stateChanged(ChangeEvent changeEvent) { JTabbedPane sourceTabbedPane = (JTabbedPane) changeEvent.getSource(); int index = sourceTabbedPane.getSelectedIndex(); if (index == 4) // Tab Resume RefreshResume(); } }; TabbedPaneMain.addChangeListener(changeListener); SplitPaneMainRight.setTopComponent(TabbedPaneMain); // -- Tab - data (grid) // ------------------------------------------------- TableMain = new javax.swing.JTable(); TableMain.setModel(ModelTableMain); TableMain.getTableHeader() .setDefaultRenderer(new MainHeaderRenderer(TableMain.getTableHeader().getDefaultRenderer())); TableMain.getTableHeader().setReorderingAllowed(false); TableMain.setDefaultRenderer(ElevationClass.class, new ElevationRenderer()); TableMain.setDefaultRenderer(DistClass.class, new DistRenderer()); TableMain.setDefaultRenderer(TotalClass.class, new TotalRenderer()); TableMain.setDefaultRenderer(DiffClass.class, new DiffRenderer()); TableMain.setDefaultRenderer(CoeffClass.class, new CoeffRenderer()); TableMain.setDefaultRenderer(LatClass.class, new LatRenderer()); TableMain.setDefaultRenderer(LonClass.class, new LonRenderer()); TableMain.setDefaultRenderer(RecupClass.class, new RecupRenderer()); TableMain.setDefaultRenderer(TimeClass.class, new TimeRenderer()); TableMain.setDefaultRenderer(TimelimitClass.class, new TimelimitRenderer()); TableMain.setDefaultRenderer(HourClass.class, new HourRenderer()); TableMain.setDefaultRenderer(StationClass.class, new StationRenderer()); TableMain.setDefaultRenderer(TagClass.class, new TagRenderer()); TableMain.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_OFF); TableMain.setRowHeight(20); TableMain.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { if (evt.getButton() == evt.BUTTON1 && evt.getClickCount() >= 2 && !evt.isConsumed()) { evt.consume(); int row = TableMain.rowAtPoint(evt.getPoint()); int col = TableMain.columnAtPoint(evt.getPoint()); frmEditPosition frm = new frmEditPosition(); if (frm.showDialog(Settings, Track, row, col)) { Track.isModified = true; RefreshTableMain(); RefreshProfil(); RefreshStatusbar(Track); } } else TableMainMouseClicked(evt); } }); TableMain.addKeyListener(new java.awt.event.KeyAdapter() { public void keyReleased(java.awt.event.KeyEvent evt) { TableMainKeyReleased(evt); } }); // -- Add the grid to a scroll panel // ------------------------------------ jScrollPaneData = new javax.swing.JScrollPane(); jScrollPaneData.setViewportView(TableMain); // -- Add the scroll panel to the tabbed panel // -------------------------- addTab(TabbedPaneMain, jScrollPaneData, bundle.getString("frmMain.TabData.tabTitle"), new javax.swing.ImageIcon(getClass().getResource("/course_generator/images/satellite16.png"))); // -- Tab - Profil // ------------------------------------------------------ jPanelProfil = new javax.swing.JPanel(); jPanelProfil.setPreferredSize(new java.awt.Dimension(677, 150)); jPanelProfil.setLayout(new java.awt.BorderLayout()); // -- Profil tool bar // --------------------------------------------------- // Create_Profil_Toolbar(); // jPanelProfil.add(ToolBarProfil, java.awt.BorderLayout.WEST); // -- Profil chart // ------------------------------------------------------ jPanelProfilChart = new ChartPanel(chart); CrosshairOverlay crosshairOverlay = new CrosshairOverlay(); xCrosshair = new Crosshair(Double.NaN, Color.DARK_GRAY, new BasicStroke(0f)); // xCrosshair.setLabelVisible(true); xCrosshair.setLabelBackgroundPaint(Color.WHITE); yCrosshair = new Crosshair(Double.NaN, Color.DARK_GRAY, new BasicStroke(0f)); // yCrosshair.setLabelVisible(true); yCrosshair.setLabelBackgroundPaint(Color.WHITE); crosshairOverlay.addDomainCrosshair(xCrosshair); crosshairOverlay.addRangeCrosshair(yCrosshair); jPanelProfilChart.addOverlay(crosshairOverlay); jPanelProfilChart.setBackground(new java.awt.Color(255, 0, 51)); jPanelProfilChart.addChartMouseListener(new ChartMouseListener() { @Override public void chartMouseClicked(ChartMouseEvent event) { ChartEntity chartentity = event.getEntity(); if (chartentity instanceof XYItemEntity) { XYItemEntity e = (XYItemEntity) chartentity; XYDataset d = e.getDataset(); int s = e.getSeriesIndex(); int i = e.getItem(); double x = d.getXValue(s, i); double y = d.getYValue(s, i); xCrosshair.setValue(x); yCrosshair.setValue(y); RefreshProfilInfo(i); //Refresh the position on the data grid TableMain.setRowSelectionInterval(i, i); Rectangle rect = TableMain.getCellRect(i, 0, true); TableMain.scrollRectToVisible(rect); //Refresh the marker position on the map RefreshCurrentPosMarker(Track.data.get(i).getLatitude(), Track.data.get(i).getLongitude()); } } @Override public void chartMouseMoved(ChartMouseEvent event) { } }); jPanelProfil.add(jPanelProfilChart, java.awt.BorderLayout.CENTER); // -- Profil info bar // --------------------------------------------------- jPanelProfilInfo = new javax.swing.JPanel(); jPanelProfilInfo.setLayout(new GridBagLayout()); jPanelProfil.add(jPanelProfilInfo, java.awt.BorderLayout.SOUTH); // -- Line 0 // -- Distance // ---------------------------------------------------------- lbProfilDistance = new javax.swing.JLabel(); lbProfilDistance.setText(" " + bundle.getString("frmMain.lbProfilDistance.text") + "=0.000km "); lbProfilDistance.setBorder(javax.swing.BorderFactory.createEtchedBorder()); Utils.addComponent(jPanelProfilInfo, lbProfilDistance, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, GridBagConstraints.EAST, GridBagConstraints.BOTH); // -- Time // -------------------------------------------------------------- lbProfilTime = new javax.swing.JLabel(); lbProfilTime.setText(" " + bundle.getString("frmMain.lbProfilTime.text") + "=00:00:00 "); lbProfilTime.setBorder(javax.swing.BorderFactory.createEtchedBorder()); Utils.addComponent(jPanelProfilInfo, lbProfilTime, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, GridBagConstraints.EAST, GridBagConstraints.BOTH); // -- Slope // ------------------------------------------------------------- lbProfilSlope = new javax.swing.JLabel(); lbProfilSlope.setText(" " + bundle.getString("frmMain.lbProfilSlope.text") + "=0.0% "); lbProfilSlope.setBorder(javax.swing.BorderFactory.createEtchedBorder()); Utils.addComponent(jPanelProfilInfo, lbProfilSlope, 2, 0, 1, 1, 0, 0, 0, 0, 0, 0, GridBagConstraints.EAST, GridBagConstraints.BOTH); // -- Name // -------------------------------------------------------------- lbProfilName = new javax.swing.JLabel(); lbProfilName.setText(" " + bundle.getString("frmMain.lbProfilName.text") + "= "); lbProfilName.setBorder(javax.swing.BorderFactory.createEtchedBorder()); Utils.addComponent(jPanelProfilInfo, lbProfilName, 3, 0, 1, 1, 1, 0, 0, 0, 0, 0, GridBagConstraints.EAST, GridBagConstraints.BOTH); // -- Line 1 // -- Elevation // --------------------------------------------------------- lbProfilElevation = new javax.swing.JLabel(); lbProfilElevation.setText(" " + bundle.getString("frmMain.lbProfilElevation.text") + "=0m "); lbProfilElevation.setBorder(javax.swing.BorderFactory.createEtchedBorder()); Utils.addComponent(jPanelProfilInfo, lbProfilElevation, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, GridBagConstraints.EAST, GridBagConstraints.BOTH); // -- Hour // -------------------------------------------------------------- lbProfilHour = new javax.swing.JLabel(); lbProfilHour.setText(" " + bundle.getString("frmMain.lbProfilHour.text") + "=00:00:00 "); lbProfilHour.setBorder(javax.swing.BorderFactory.createEtchedBorder()); Utils.addComponent(jPanelProfilInfo, lbProfilHour, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, GridBagConstraints.EAST, GridBagConstraints.BOTH); // -- Speed // ------------------------------------------------------------- lbProfilSpeed = new javax.swing.JLabel(); lbProfilSpeed.setText(" " + bundle.getString("frmMain.lbProfilSpeed.text") + "=0.0km/h "); lbProfilSpeed.setBorder(javax.swing.BorderFactory.createEtchedBorder()); Utils.addComponent(jPanelProfilInfo, lbProfilSpeed, 2, 1, 1, 1, 0, 0, 0, 0, 0, 0, GridBagConstraints.EAST, GridBagConstraints.BOTH); // -- Comment // ----------------------------------------------------------- lbProfilComment = new javax.swing.JLabel(); lbProfilComment.setText(" " + bundle.getString("frmMain.lbProfilComment.text") + "= "); lbProfilComment.setBorder(javax.swing.BorderFactory.createEtchedBorder()); Utils.addComponent(jPanelProfilInfo, lbProfilComment, 3, 1, 1, 1, 1, 0, 0, 0, 0, 0, GridBagConstraints.EAST, GridBagConstraints.BOTH); // -- Distance / Temps / Pente / Nom // -- Altitude / Heure / Vitesse / Commentaire // -- Add the panel to the tabbed panel // --------------------------------- addTab(TabbedPaneMain, jPanelProfil, bundle.getString("frmMain.TabProfil.tabTitle"), new javax.swing.ImageIcon(getClass().getResource("/course_generator/images/profil.png"))); // -- Tab - Statistic // --------------------------------------------------- jPanelStatistic = new javax.swing.JPanel(); jPanelStatistic.setLayout(new java.awt.BorderLayout()); // -- Statistic tool bar // --------------------------------------------------- Create_Statistic_Toolbar(); jPanelStatistic.add(ToolBarStatistic, java.awt.BorderLayout.NORTH); // TODO Add the component to display the statistics addTab(TabbedPaneMain, jPanelStatistic, bundle.getString("frmMain.TabStatistic.tabTitle"), new javax.swing.ImageIcon(getClass().getResource("/course_generator/images/stat.png"))); // -- Tab - Analysis // ---------------------------------------------------- jPanelAnalyze = new javax.swing.JPanel(); // TODO Define this panel addTab(TabbedPaneMain, jPanelAnalyze, bundle.getString("frmMain.TabAnalyze.tabTitle"), new javax.swing.ImageIcon(getClass().getResource("/course_generator/images/search.png"))); // -- Tab - Resume // ------------------------------------------------------ jPanelResume = new javax.swing.JPanel(); jPanelResume.setLayout(new java.awt.BorderLayout()); // -- Resume tool bar // --------------------------------------------------- Create_Resume_Toolbar(); jPanelResume.add(ToolBarResume, java.awt.BorderLayout.NORTH); TableResume = new javax.swing.JTable(); TableResume.setModel(ModelTableResume); TableResume.setRowHeight(20); TableResume.getTableHeader().setReorderingAllowed(false); TableResume.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_OFF); TableResume.getTableHeader() .setDefaultRenderer(new ResumeHeaderRenderer(TableResume.getTableHeader().getDefaultRenderer())); // TODO Change the Renderer name. Add Resume... TableResume.setDefaultRenderer(ResumeNumClass.class, new ResumeNumRenderer()); TableResume.setDefaultRenderer(ResumeNameClass.class, new ResumeNameRenderer()); TableResume.setDefaultRenderer(ResumeLineClass.class, new ResumeLineRenderer()); TableResume.setDefaultRenderer(ResumeElevationClass.class, new ResumeElevationRenderer()); TableResume.setDefaultRenderer(ResumeClimbPClass.class, new ResumeClimbPRenderer()); TableResume.setDefaultRenderer(ResumeClimbNClass.class, new ResumeClimbNRenderer()); TableResume.setDefaultRenderer(ResumeDistanceClass.class, new ResumeDistanceRenderer()); TableResume.setDefaultRenderer(ResumeTimeClass.class, new ResumeTimeRenderer()); TableResume.setDefaultRenderer(ResumeHourClass.class, new ResumeHourRenderer()); TableResume.setDefaultRenderer(ResumedtTimeClass.class, new ResumedtTimeRenderer()); TableResume.setDefaultRenderer(ResumeTimeLimitClass.class, new ResumeTimeLimitRenderer()); TableResume.setDefaultRenderer(ResumeStationTimeClass.class, new ResumeStationTimeRenderer()); TableResume.setDefaultRenderer(ResumedtDistanceClass.class, new ResumedtDistanceRenderer()); TableResume.setDefaultRenderer(ResumedtClimbPClass.class, new ResumedtClimbPRenderer()); TableResume.setDefaultRenderer(ResumedtClimbNClass.class, new ResumedtClimbNRenderer()); TableResume.setDefaultRenderer(ResumeSpeedPClass.class, new ResumeSpeedPRenderer()); TableResume.setDefaultRenderer(ResumeSpeedNClass.class, new ResumeSpeedNRenderer()); TableResume.setDefaultRenderer(ResumeAvgSlopePClass.class, new ResumeAvgSlopePRenderer()); TableResume.setDefaultRenderer(ResumeAvgSlopeNClass.class, new ResumeAvgSlopeNRenderer()); TableResume.setDefaultRenderer(ResumeAvgSpeedClass.class, new ResumeAvgSpeedRenderer()); TableResume.setDefaultRenderer(ResumeCommentClass.class, new ResumeCommentRenderer()); // TableResume.addMouseListener(new java.awt.event.MouseAdapter() { // public void mouseClicked(java.awt.event.MouseEvent evt) { // TableMainMouseClicked(evt); // } // }); // TableResume.addKeyListener(new java.awt.event.KeyAdapter() { // public void keyReleased(java.awt.event.KeyEvent evt) { // TableMainKeyReleased(evt); // } // }); // -- Add the grid to a scroll panel // ------------------------------------ jScrollPaneResume = new javax.swing.JScrollPane(); jScrollPaneResume.setViewportView(TableResume); jPanelResume.add(jScrollPaneResume, java.awt.BorderLayout.CENTER); addTab(TabbedPaneMain, jPanelResume, bundle.getString("frmMain.TabResume.tabTitle"), new javax.swing.ImageIcon(getClass().getResource("/course_generator/images/grid.png"))); // -- Map panel // --------------------------------------------------------- jPanelMap = new javax.swing.JPanel(); jPanelMap.setLayout(new java.awt.BorderLayout()); Create_Map_Toolbar(); jPanelMap.add(jToolBarMapViewer, java.awt.BorderLayout.WEST); MapViewer = new org.openstreetmap.gui.jmapviewer.JMapViewer(); MapViewer.setMapMarkerVisible(true); MapViewer.setScrollWrapEnabled(true); MapViewer.setZoomButtonStyle(org.openstreetmap.gui.jmapviewer.JMapViewer.ZOOM_BUTTON_STYLE.VERTICAL); MapViewer.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { MapViewerMouseClicked(evt); } }); jPanelMap.add(MapViewer, java.awt.BorderLayout.CENTER); jScrollPanelMap = new javax.swing.JScrollPane(); jScrollPanelMap.setViewportView(jPanelMap); SplitPaneMainRight.setRightComponent(jScrollPanelMap); // -- Finished - Pack // --------------------------------------------------- pack(); }
From source file:neembuu.uploader.NeembuuUploader.java
private void setupTabs() { forumButton.setText(Translation.T().forumButton()); neembuuuploadertab = it(neembuuUploaderTab); uploadhistorytab = it(uploadHistoryTab); accountstab = it(accountsTab);//www. j a va2 s . co m settingstab = it(settingsTab); abouttab = it(aboutTab); tabbedPane.setTitleAt(neembuuuploadertab, Translation.T().neembuuuploader()); tabbedPane.setTitleAt(uploadhistorytab, Translation.T().recentButton()); tabbedPane.setTitleAt(accountstab, Translation.T().accountsButton()); tabbedPane.setTitleAt(settingstab, Translation.T().settings()); tabbedPane.setTitleAt(abouttab, Translation.T().aboutButton()); tabbedPane.addChangeListener(new ChangeListener() { @Override public void stateChanged(ChangeEvent e) { int ti = tabbedPane.getSelectedIndex(); System.out.println("Tab: " + ti); if (ti == neembuuuploadertab) { // do nothing } else if (ti == uploadhistorytab) { uploadHistoryTab.removeAll(); UploadHistory foo = UploadHistory.getInstance(); uploadHistoryTab.add(foo.uploadHistoryPanel); NULogger.getLogger().info("Upload history tab opened"); } else if (ti == accountstab) { if (accountsTab.getComponentCount() <= 0) { accountsTab.add(AccountsManager.getInstance().getAccountsManagerPanel()); } NULogger.getLogger().info("Accounts Manager tab opened"); } else if (ti == settingstab) { if (settingsTab.getComponentCount() <= 0) { settingsTab.add(SettingsManager.getInstance().getSettingsTabbedPanel()); } NULogger.getLogger().info("Settings tab opened"); } else if (ti == abouttab) { if (aboutTab.getComponentCount() <= 0) { aboutTab.add(AboutNeembuuUploader.getInstance().aboutPanel); } NULogger.getLogger().info("About tab opened"); } else { throw new AssertionError("Unknown tab"); } ThemeCheck.apply(NeembuuUploader.this); } }); }
From source file:com.mirth.connect.client.ui.ChannelPanel.java
public void initPanelPlugins() { loadPanelPlugins();/*from www . j a va 2 s. com*/ switchBottomPane(); ChangeListener changeListener = new ChangeListener() { @Override public void stateChanged(ChangeEvent changeEvent) { JTabbedPane sourceTabbedPane = (JTabbedPane) changeEvent.getSource(); int index = sourceTabbedPane.getSelectedIndex(); loadPanelPlugin(sourceTabbedPane.getTitleAt(index)); } }; tabPane.addChangeListener(changeListener); }
From source file:eu.crisis_economics.abm.dashboard.Page_Parameters.java
@SuppressWarnings("unchecked") private List<ParameterInfo> createAndDisplayAParameterPanel( final List<ai.aitia.meme.paramsweep.batch.param.ParameterInfo<?>> batchParameters, final String title, final SubmodelInfo parent, final boolean submodelSelectionWithoutNotify, final IModelHandler currentModelHandler) { final List<ParameterMetaData> metadata = new LinkedList<ParameterMetaData>(), unknownFields = new ArrayList<ParameterMetaData>(); for (final ai.aitia.meme.paramsweep.batch.param.ParameterInfo<?> record : batchParameters) { final String parameterName = record.getName(), fieldName = StringUtils.uncapitalize(parameterName); Class<?> modelComponentType = parent == null ? currentModelHandler.getModelClass() : parent.getActualType(); while (true) { try { final Field field = modelComponentType.getDeclaredField(fieldName); final ParameterMetaData datum = new ParameterMetaData(); for (final Annotation element : field.getAnnotations()) { if (element.annotationType().getName() != Layout.class.getName()) // Proxies continue; final Class<? extends Annotation> type = element.annotationType(); datum.verboseDescription = (String) type.getMethod("VerboseDescription").invoke(element); datum.banner = (String) type.getMethod("Title").invoke(element); datum.fieldName = (String) " " + type.getMethod("FieldName").invoke(element); datum.imageFileName = (String) type.getMethod("Image").invoke(element); datum.layoutOrder = (Double) type.getMethod("Order").invoke(element); }/*from ww w.j av a 2 s. c o m*/ datum.parameter = record; if (datum.fieldName.trim().isEmpty()) datum.fieldName = parameterName.replaceAll("([A-Z])", " $1"); metadata.add(datum); break; } catch (final SecurityException e) { } catch (final NoSuchFieldException e) { } catch (final IllegalArgumentException e) { } catch (final IllegalAccessException e) { } catch (final InvocationTargetException e) { } catch (final NoSuchMethodException e) { } modelComponentType = modelComponentType.getSuperclass(); if (modelComponentType == null) { ParameterMetaData.createAndRegisterUnknown(fieldName, record, unknownFields); break; } } } Collections.sort(metadata); for (int i = unknownFields.size() - 1; i >= 0; --i) metadata.add(0, unknownFields.get(i)); // initialize single run form final DefaultFormBuilder formBuilder = FormsUtils.build("p ~ p:g", ""); appendMinimumWidthHintToPresentation(formBuilder, 550); if (parent == null) { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { numberOfTurnsField.grabFocus(); } }); appendBannerToPresentation(formBuilder, "General Parameters"); appendTextToPresentation(formBuilder, "Global parameters affecting the entire simulation"); formBuilder.append(NUMBER_OF_TURNS_LABEL_TEXT, numberOfTurnsField); formBuilder.append(NUMBER_OF_TIMESTEPS_TO_IGNORE_LABEL_TEXT, numberTimestepsIgnored); appendCheckBoxFieldToPresentation(formBuilder, UPDATE_CHARTS_LABEL_TEXT, onLineChartsCheckBox); appendCheckBoxFieldToPresentation(formBuilder, DISPLAY_ADVANCED_CHARTS_LABEL_TEXT, advancedChartsCheckBox); } appendBannerToPresentation(formBuilder, title); final DefaultMutableTreeNode parentNode = (parent == null) ? parameterValueComponentTree : findParameterInfoNode(parent, false); final List<ParameterInfo> info = new ArrayList<ParameterInfo>(); // Search for a @ConfigurationComponent annotation { String headerText = "", imagePath = ""; final Class<?> parentType = parent == null ? currentModelHandler.getModelClass() : parent.getActualType(); for (final Annotation element : parentType.getAnnotations()) { // Proxies if (element.annotationType().getName() != ConfigurationComponent.class.getName()) continue; boolean doBreak = false; try { try { headerText = (String) element.annotationType().getMethod("Description").invoke(element); if (headerText.startsWith("#")) { headerText = (String) parent.getActualType().getMethod(headerText.substring(1)) .invoke(parent.getInstance()); } doBreak = true; } catch (IllegalArgumentException e) { } catch (SecurityException e) { } catch (IllegalAccessException e) { } catch (InvocationTargetException e) { } catch (NoSuchMethodException e) { } } catch (final Exception e) { } try { imagePath = (String) element.annotationType().getMethod("ImagePath").invoke(element); doBreak = true; } catch (IllegalArgumentException e) { } catch (SecurityException e) { } catch (IllegalAccessException e) { } catch (InvocationTargetException e) { } catch (NoSuchMethodException e) { } if (doBreak) break; } if (!headerText.isEmpty()) appendHeaderTextToPresentation(formBuilder, headerText); if (!imagePath.isEmpty()) appendImageToPresentation(formBuilder, imagePath); } if (metadata.isEmpty()) { // No fields to display. appendTextToPresentation(formBuilder, "No configuration is required for this module."); } else { for (final ParameterMetaData record : metadata) { final ai.aitia.meme.paramsweep.batch.param.ParameterInfo<?> batchParameterInfo = record.parameter; if (!record.banner.isEmpty()) appendBannerToPresentation(formBuilder, record.banner); if (!record.imageFileName.isEmpty()) appendImageToPresentation(formBuilder, record.imageFileName); appendTextToPresentation(formBuilder, record.verboseDescription); final ParameterInfo parameterInfo = InfoConverter.parameterInfo2ParameterInfo(batchParameterInfo); if (parent != null && parameterInfo instanceof ISubmodelGUIInfo) { // sgi.setParentValue(parent.getActualType()); } final JComponent field; final DefaultMutableTreeNode oldNode = findParameterInfoNode(parameterInfo, true); Pair<ParameterInfo, JComponent> userData = null; JComponent oldField = null; if (oldNode != null) { userData = (Pair<ParameterInfo, JComponent>) oldNode.getUserObject(); oldField = userData.getSecond(); } if (parameterInfo.isBoolean()) { field = new JCheckBox(); boolean value = oldField != null ? ((JCheckBox) oldField).isSelected() : ((Boolean) batchParameterInfo.getDefaultValue()).booleanValue(); ((JCheckBox) field).setSelected(value); } else if (parameterInfo.isEnum() || parameterInfo instanceof MasonChooserParameterInfo) { Object[] elements = null; if (parameterInfo.isEnum()) { final Class<Enum<?>> type = (Class<Enum<?>>) parameterInfo.getJavaType(); elements = type.getEnumConstants(); } else { final MasonChooserParameterInfo chooserInfo = (MasonChooserParameterInfo) parameterInfo; elements = chooserInfo.getValidStrings(); } final JComboBox list = new JComboBox(elements); if (parameterInfo.isEnum()) { final Object value = oldField != null ? ((JComboBox) oldField).getSelectedItem() : parameterInfo.getValue(); list.setSelectedItem(value); } else { final int value = oldField != null ? ((JComboBox) oldField).getSelectedIndex() : (Integer) parameterInfo.getValue(); list.setSelectedIndex(value); } field = list; } else if (parameterInfo instanceof SubmodelInfo) { final SubmodelInfo submodelInfo = (SubmodelInfo) parameterInfo; final Object[] elements = new Object[] { "Loading class information..." }; final JComboBox list = new JComboBox(elements); // field = list; final Object value = oldField != null ? ((JComboBox) ((JPanel) oldField).getComponent(0)).getSelectedItem() : new ClassElement(submodelInfo.getActualType(), null); new ClassCollector(this, list, submodelInfo, value, submodelSelectionWithoutNotify).execute(); final JButton rightButton = new JButton(); rightButton.setOpaque(false); rightButton.setRolloverEnabled(true); rightButton.setIcon(SHOW_SUBMODEL_ICON); rightButton.setRolloverIcon(SHOW_SUBMODEL_ICON_RO); rightButton.setDisabledIcon(SHOW_SUBMODEL_ICON_DIS); rightButton.setBorder(null); rightButton.setToolTipText("Display submodel parameters"); rightButton.setActionCommand(ACTIONCOMMAND_SHOW_SUBMODEL); rightButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { if (parameterInfo instanceof SubmodelInfo) { SubmodelInfo submodelInfo = (SubmodelInfo) parameterInfo; int level = 0; showHideSubparameters(list, submodelInfo); List<String> components = new ArrayList<String>(); components.add(submodelInfo.getName()); while (submodelInfo.getParent() != null) { submodelInfo = submodelInfo.getParent(); components.add(submodelInfo.getName()); level++; } Collections.reverse(components); final String[] breadcrumbText = components.toArray(new String[components.size()]); for (int i = 0; i < breadcrumbText.length; ++i) breadcrumbText[i] = breadcrumbText[i].replaceAll("([A-Z])", " $1"); breadcrumb.setPath( currentModelHandler.getModelClassSimpleName().replaceAll("([A-Z])", " $1"), breadcrumbText); Style.apply(breadcrumb, dashboard.getCssStyle()); // reset all buttons that are nested deeper than this to default color for (int i = submodelButtons.size() - 1; i >= level; i--) { JButton button = submodelButtons.get(i); button.setIcon(SHOW_SUBMODEL_ICON); submodelButtons.remove(i); } rightButton.setIcon(SHOW_SUBMODEL_ICON_RO); submodelButtons.add(rightButton); } } }); field = new JPanel(new BorderLayout()); field.add(list, BorderLayout.CENTER); field.add(rightButton, BorderLayout.EAST); } else if (File.class.isAssignableFrom(parameterInfo.getJavaType())) { field = new JPanel(new BorderLayout()); String oldName = ""; String oldPath = ""; if (oldField != null) { final JTextField oldTextField = (JTextField) oldField.getComponent(0); oldName = oldTextField.getText(); oldPath = oldTextField.getToolTipText(); } else if (parameterInfo.getValue() != null) { final File file = (File) parameterInfo.getValue(); oldName = file.getName(); oldPath = file.getAbsolutePath(); } final JTextField textField = new JTextField(oldName); textField.setToolTipText(oldPath); textField.setInputVerifier(new InputVerifier() { @Override public boolean verify(final JComponent input) { final JTextField inputField = (JTextField) input; if (inputField.getText() == null || inputField.getText().isEmpty()) { final File file = new File(""); inputField.setToolTipText(file.getAbsolutePath()); hideError(); return true; } final File oldFile = new File(inputField.getToolTipText()); if (oldFile.exists() && oldFile.getName().equals(inputField.getText().trim())) { hideError(); return true; } inputField.setToolTipText(""); final File file = new File(inputField.getText().trim()); if (file.exists()) { inputField.setToolTipText(file.getAbsolutePath()); inputField.setText(file.getName()); hideError(); return true; } else { final PopupFactory popupFactory = PopupFactory.getSharedInstance(); final Point locationOnScreen = inputField.getLocationOnScreen(); final JLabel message = new JLabel("Please specify an existing file!"); message.setBorder(new LineBorder(Color.RED, 2, true)); if (errorPopup != null) errorPopup.hide(); errorPopup = popupFactory.getPopup(inputField, message, locationOnScreen.x - 10, locationOnScreen.y - 30); errorPopup.show(); return false; } } }); final JButton browseButton = new JButton(BROWSE_BUTTON_TEXT); browseButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { final JFileChooser fileDialog = new JFileChooser( !"".equals(textField.getToolTipText()) ? textField.getToolTipText() : currentDirectory); if (!"".equals(textField.getToolTipText())) fileDialog.setSelectedFile(new File(textField.getToolTipText())); int dialogResult = fileDialog.showOpenDialog(dashboard); if (dialogResult == JFileChooser.APPROVE_OPTION) { final File selectedFile = fileDialog.getSelectedFile(); if (selectedFile != null) { currentDirectory = selectedFile.getAbsoluteFile().getParent(); textField.setText(selectedFile.getName()); textField.setToolTipText(selectedFile.getAbsolutePath()); } } } }); field.add(textField, BorderLayout.CENTER); field.add(browseButton, BorderLayout.EAST); } else if (parameterInfo instanceof MasonIntervalParameterInfo) { final MasonIntervalParameterInfo intervalInfo = (MasonIntervalParameterInfo) parameterInfo; field = new JPanel(new BorderLayout()); String oldValueStr = String.valueOf(parameterInfo.getValue()); if (oldField != null) { final JTextField oldTextField = (JTextField) oldField.getComponent(0); oldValueStr = oldTextField.getText(); } final JTextField textField = new JTextField(oldValueStr); PercentJSlider tempSlider = null; if (intervalInfo.isDoubleInterval()) tempSlider = new PercentJSlider(intervalInfo.getIntervalMin().doubleValue(), intervalInfo.getIntervalMax().doubleValue(), Double.parseDouble(oldValueStr)); else tempSlider = new PercentJSlider(intervalInfo.getIntervalMin().longValue(), intervalInfo.getIntervalMax().longValue(), Long.parseLong(oldValueStr)); final PercentJSlider slider = tempSlider; slider.setMajorTickSpacing(100); slider.setMinorTickSpacing(10); slider.setPaintTicks(true); slider.setPaintLabels(true); slider.addChangeListener(new ChangeListener() { public void stateChanged(final ChangeEvent _) { if (slider.hasFocus()) { final String value = intervalInfo.isDoubleInterval() ? String.valueOf(slider.getDoubleValue()) : String.valueOf(slider.getLongValue()); textField.setText(value); slider.setToolTipText(value); } } }); textField.setInputVerifier(new InputVerifier() { public boolean verify(JComponent input) { final JTextField inputField = (JTextField) input; try { hideError(); final String valueStr = inputField.getText().trim(); if (intervalInfo.isDoubleInterval()) { final double value = Double.parseDouble(valueStr); if (intervalInfo.isValidValue(valueStr)) { slider.setValue(value); return true; } else showError( "Please specify a value between " + intervalInfo.getIntervalMin() + " and " + intervalInfo.getIntervalMax() + ".", inputField); return false; } else { final long value = Long.parseLong(valueStr); if (intervalInfo.isValidValue(valueStr)) { slider.setValue(value); return true; } else { showError("Please specify an integer value between " + intervalInfo.getIntervalMin() + " and " + intervalInfo.getIntervalMax() + ".", inputField); return false; } } } catch (final NumberFormatException _) { final String message = "The specified value is not a" + (intervalInfo.isDoubleInterval() ? "" : "n integer") + " number."; showError(message, inputField); return false; } } }); textField.getDocument().addDocumentListener(new DocumentListener() { // private Popup errorPopup; public void removeUpdate(final DocumentEvent _) { textFieldChanged(); } public void insertUpdate(final DocumentEvent _) { textFieldChanged(); } public void changedUpdate(final DocumentEvent _) { textFieldChanged(); } private void textFieldChanged() { if (!textField.hasFocus()) { hideError(); return; } try { hideError(); final String valueStr = textField.getText().trim(); if (intervalInfo.isDoubleInterval()) { final double value = Double.parseDouble(valueStr); if (intervalInfo.isValidValue(valueStr)) slider.setValue(value); else showError("Please specify a value between " + intervalInfo.getIntervalMin() + " and " + intervalInfo.getIntervalMax() + ".", textField); } else { final long value = Long.parseLong(valueStr); if (intervalInfo.isValidValue(valueStr)) slider.setValue(value); else showError("Please specify an integer value between " + intervalInfo.getIntervalMin() + " and " + intervalInfo.getIntervalMax() + ".", textField); } } catch (final NumberFormatException _) { final String message = "The specified value is not a" + (intervalInfo.isDoubleInterval() ? "" : "n integer") + " number."; showError(message, textField); } } }); field.add(textField, BorderLayout.CENTER); field.add(slider, BorderLayout.SOUTH); } else { final Object value = oldField != null ? ((JTextField) oldField).getText() : parameterInfo.getValue(); field = new JTextField(value.toString()); ((JTextField) field).addActionListener(new ActionListener() { @Override public void actionPerformed(final ActionEvent e) { wizard.clickDefaultButton(); } }); } final JLabel parameterLabel = new JLabel(record.fieldName); final String description = parameterInfo.getDescription(); if (description != null && !description.isEmpty()) { parameterLabel.addMouseListener(new MouseAdapter() { @Override public void mouseEntered(final MouseEvent e) { final DescriptionPopupFactory popupFactory = DescriptionPopupFactory.getInstance(); final Popup parameterDescriptionPopup = popupFactory.getPopup(parameterLabel, description, dashboard.getCssStyle()); parameterDescriptionPopup.show(); } }); } if (oldNode != null) userData.setSecond(field); else { final Pair<ParameterInfo, JComponent> pair = new Pair<ParameterInfo, JComponent>(parameterInfo, field); final DefaultMutableTreeNode newNode = new DefaultMutableTreeNode(pair); parentNode.add(newNode); } if (field instanceof JCheckBox) { parameterLabel .setText("<html><div style=\"margin-bottom: 4pt; margin-top: 6pt; margin-left: 4pt\">" + parameterLabel.getText() + "</div></html>"); formBuilder.append(parameterLabel, field); // appendCheckBoxFieldToPresentation( // formBuilder, parameterLabel.getText(), (JCheckBox) field); } else { formBuilder.append(parameterLabel, field); final CellConstraints constraints = formBuilder.getLayout().getConstraints(parameterLabel); constraints.vAlign = CellConstraints.TOP; constraints.insets = new Insets(5, 0, 0, 0); formBuilder.getLayout().setConstraints(parameterLabel, constraints); } // prepare the parameterInfo for the param sweeps parameterInfo.setRuns(0); parameterInfo.setDefinitionType(ParameterInfo.CONST_DEF); parameterInfo.setValue(batchParameterInfo.getDefaultValue()); info.add(parameterInfo); } } appendVerticalSpaceToPresentation(formBuilder); final JPanel panel = formBuilder.getPanel(); singleRunParametersPanel.add(panel); if (singleRunParametersPanel.getComponentCount() > 1) { panel.setBorder( BorderFactory.createCompoundBorder(BorderFactory.createMatteBorder(0, 1, 0, 0, Color.GRAY), BorderFactory.createEmptyBorder(0, 5, 0, 5))); } else { panel.setBorder(BorderFactory.createEmptyBorder(0, 5, 0, 5)); } Style.apply(panel, dashboard.getCssStyle()); return info; }
From source file:de.bfs.radon.omsimulation.gui.OMPanelSimulation.java
/** * Initialises the interface of the simulation panel. *//*from ww w .j a v a 2 s .c o m*/ protected void initialize() { setLayout(null); btnStart = new JButton("Start"); btnStart.addActionListener(this); btnStart.setBounds(616, 326, 124, 23); btnStart.setFont(new Font(Font.SANS_SERIF, Font.PLAIN, 11)); add(btnStart); progressBarSimulation = new JProgressBar(); progressBarSimulation.setBounds(10, 475, 730, 23); progressBarSimulation.setFont(new Font(Font.SANS_SERIF, Font.PLAIN, 11)); progressBarSimulation.setVisible(false); add(progressBarSimulation); lblSelectOmbfile = new JLabel("Open OMB-File"); lblSelectOmbfile.setFont(new Font(Font.SANS_SERIF, Font.PLAIN, 11)); lblSelectOmbfile.setBounds(10, 36, 132, 14); add(lblSelectOmbfile); lblOmsFile = new JLabel("Save OMS-File"); lblOmsFile.setFont(new Font(Font.SANS_SERIF, Font.PLAIN, 11)); lblOmsFile.setBounds(174, 272, 120, 14); add(lblOmsFile); txtOmsFile = new JTextField(); txtOmsFile.addFocusListener(new FocusAdapter() { @Override public void focusLost(FocusEvent arg0) { setOmsFile(txtOmsFile.getText()); } }); txtOmsFile.setBounds(304, 269, 302, 20); txtOmsFile.setFont(new Font(Font.SANS_SERIF, Font.PLAIN, 11)); add(txtOmsFile); txtOmsFile.setColumns(10); btnBrowseOms = new JButton("Browse"); btnBrowseOms.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { JFileChooser fileDialog = new JFileChooser(); fileDialog.setFileFilter(new FileNameExtensionFilter("*.oms", "oms")); fileDialog.showSaveDialog(getParent()); final File file = fileDialog.getSelectedFile(); if (file != null) { String oms; String[] tmpFileName = file.getAbsolutePath().split("\\."); if (tmpFileName[tmpFileName.length - 1].equals("oms")) { oms = ""; } else { oms = ".oms"; } txtOmsFile.setText(file.getAbsolutePath() + oms); setOmsFile(file.getAbsolutePath() + oms); } } }); btnBrowseOms.setBounds(616, 268, 124, 23); btnBrowseOms.setFont(new Font(Font.SANS_SERIF, Font.PLAIN, 11)); add(btnBrowseOms); lblWarning = new JLabel("This could take a while, grab a coffee!"); lblWarning.setBounds(421, 94, 319, 15); lblWarning.setForeground(new Color(255, 0, 0, 255)); lblWarning.setFont(new Font(Font.SANS_SERIF, Font.PLAIN, 11)); add(lblWarning); lblSelectProject = new JLabel("Select Project"); lblSelectProject.setBounds(10, 65, 132, 14); lblSelectProject.setFont(new Font(Font.SANS_SERIF, Font.PLAIN, 11)); add(lblSelectProject); lblSimulationType = new JLabel("Simulation Type"); lblSimulationType.setBounds(10, 94, 132, 14); lblSimulationType.setFont(new Font(Font.SANS_SERIF, Font.PLAIN, 11)); add(lblSimulationType); lblCampaigns = new JLabel("campaigns"); lblCampaigns.setBounds(421, 122, 185, 14); lblCampaigns.setFont(new Font(Font.SANS_SERIF, Font.PLAIN, 11)); add(lblCampaigns); lblRatio = new JLabel("Ratio"); lblRatio.setBounds(174, 152, 44, 14); lblRatio.setFont(new Font(Font.SANS_SERIF, Font.PLAIN, 11)); add(lblRatio); lblPercent = new JLabel("%"); lblPercent.setBounds(246, 302, 360, 14); lblPercent.setFont(new Font(Font.SANS_SERIF, Font.PLAIN, 11)); add(lblPercent); spnrRandomCampaigns = new JSpinner(); spnrRandomCampaigns.addFocusListener(new FocusAdapter() { @Override public void focusLost(FocusEvent e) { setRandomCampaigns((Integer) spnrRandomCampaigns.getValue()); } }); spnrRandomCampaigns.setModel(new SpinnerNumberModel(10000, 10, 100000, 1)); spnrRandomCampaigns.setBounds(304, 119, 107, 22); spnrRandomCampaigns.setFont(new Font(Font.SANS_SERIF, Font.PLAIN, 11)); add(spnrRandomCampaigns); spnrRatio3 = new JSpinner(); spnrRatio3.addFocusListener(new FocusAdapter() { @Override public void focusLost(FocusEvent e) { if (chckbxRatio3.isSelected()) { setRatio3((Integer) spnrRatio3.getValue()); } else { setRatio3(0); spnrRatio3.setEnabled(false); } } }); spnrRatio3.setModel(new SpinnerNumberModel(2, 0, 10000, 1)); spnrRatio3.setBounds(330, 149, 81, 22); spnrRatio3.setFont(new Font(Font.SANS_SERIF, Font.PLAIN, 11)); add(spnrRatio3); spnrRatio4 = new JSpinner(); spnrRatio4.addFocusListener(new FocusAdapter() { @Override public void focusLost(FocusEvent e) { if (chckbxRatio4.isSelected()) { setRatio4((Integer) spnrRatio4.getValue()); } else { setRatio4(0); spnrRatio4.setEnabled(false); } } }); spnrRatio4.setModel(new SpinnerNumberModel(5, 0, 10000, 1)); spnrRatio4.setBounds(330, 179, 81, 22); spnrRatio4.setFont(new Font(Font.SANS_SERIF, Font.PLAIN, 11)); add(spnrRatio4); spnrRatio5 = new JSpinner(); spnrRatio5.addFocusListener(new FocusAdapter() { @Override public void focusLost(FocusEvent e) { if (chckbxRatio5.isSelected()) { setRatio5((Integer) spnrRatio5.getValue()); } else { setRatio5(0); spnrRatio5.setEnabled(false); } } }); spnrRatio5.setModel(new SpinnerNumberModel(20, 0, 10000, 1)); spnrRatio5.setBounds(330, 209, 81, 22); spnrRatio5.setFont(new Font(Font.SANS_SERIF, Font.PLAIN, 11)); add(spnrRatio5); spnrRatio6 = new JSpinner(); spnrRatio6.addFocusListener(new FocusAdapter() { @Override public void focusLost(FocusEvent e) { if (chckbxRatio6.isSelected()) { setRatio6((Integer) spnrRatio6.getValue()); } else { setRatio6(0); spnrRatio6.setEnabled(false); } } }); spnrRatio6.setModel(new SpinnerNumberModel(73, 0, 10000, 1)); spnrRatio6.setBounds(330, 239, 81, 22); spnrRatio6.setFont(new Font(Font.SANS_SERIF, Font.PLAIN, 11)); add(spnrRatio6); spnrRandomNoise = new JSpinner(); spnrRandomNoise.addFocusListener(new FocusAdapter() { @Override public void focusLost(FocusEvent e) { if (chckbxRandomNoise.isSelected()) { setRandomNoise((Integer) spnrRandomNoise.getValue()); } else { setRandomNoise(0); spnrRandomNoise.setEnabled(false); } } }); spnrRandomNoise.setModel(new SpinnerNumberModel(5, 0, 20, 1)); spnrRandomNoise.setBounds(153, 299, 83, 22); spnrRandomNoise.setFont(new Font(Font.SANS_SERIF, Font.PLAIN, 11)); add(spnrRandomNoise); chckbxRatio3 = new JCheckBox("3 of 6"); chckbxRatio3.addChangeListener(new ChangeListener() { public void stateChanged(ChangeEvent e) { if (chckbxRatio3.isSelected()) { if (rdbtnRandom.isSelected()) { spnrRatio3.setEnabled(true); } } else { setRatio3(0); spnrRatio3.setEnabled(false); } } }); chckbxRatio3.setBounds(237, 149, 80, 23); chckbxRatio3.setFont(new Font(Font.SANS_SERIF, Font.PLAIN, 11)); add(chckbxRatio3); chckbxRatio4 = new JCheckBox("4 of 6"); chckbxRatio4.addChangeListener(new ChangeListener() { public void stateChanged(ChangeEvent e) { if (chckbxRatio4.isSelected()) { if (rdbtnRandom.isSelected()) { spnrRatio4.setEnabled(true); } } else { setRatio4(0); spnrRatio4.setEnabled(false); } } }); chckbxRatio4.setBounds(237, 179, 80, 23); chckbxRatio4.setFont(new Font(Font.SANS_SERIF, Font.PLAIN, 11)); add(chckbxRatio4); chckbxRatio5 = new JCheckBox("5 of 6"); chckbxRatio5.addChangeListener(new ChangeListener() { public void stateChanged(ChangeEvent e) { if (chckbxRatio5.isSelected()) { if (rdbtnRandom.isSelected()) { spnrRatio5.setEnabled(true); } } else { setRatio5(0); spnrRatio5.setEnabled(false); } } }); chckbxRatio5.setBounds(237, 209, 80, 23); chckbxRatio5.setFont(new Font(Font.SANS_SERIF, Font.PLAIN, 11)); add(chckbxRatio5); chckbxRatio6 = new JCheckBox("6 of 6"); chckbxRatio6.addChangeListener(new ChangeListener() { public void stateChanged(ChangeEvent e) { if (chckbxRatio6.isSelected()) { if (rdbtnRandom.isSelected()) { spnrRatio6.setEnabled(true); } } else { setRatio6(0); spnrRatio6.setEnabled(false); } } }); chckbxRatio6.setBounds(237, 239, 80, 23); chckbxRatio6.setFont(new Font(Font.SANS_SERIF, Font.PLAIN, 11)); add(chckbxRatio6); chckbxRandomNoise = new JCheckBox("Random noise"); chckbxRandomNoise.addChangeListener(new ChangeListener() { public void stateChanged(ChangeEvent e) { if (chckbxRandomNoise.isSelected()) { if (chckbxRandomNoise.isEnabled()) { spnrRandomNoise.setEnabled(true); } } else { setRandomNoise(0); spnrRandomNoise.setEnabled(false); } } }); chckbxRandomNoise.setBounds(10, 299, 137, 23); chckbxRandomNoise.setFont(new Font(Font.SANS_SERIF, Font.PLAIN, 11)); add(chckbxRandomNoise); btnRefresh = new JButton("Load"); btnRefresh.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { if (txtOmbFile.getText() != null && !txtOmbFile.getText().equals("") && !txtOmbFile.getText().equals(" ")) { txtOmbFile.setBackground(Color.WHITE); String ombPath = txtOmbFile.getText(); String omb; String[] tmpFileName = ombPath.split("\\."); if (tmpFileName[tmpFileName.length - 1].equals("omb")) { omb = ""; } else { omb = ".omb"; } txtOmbFile.setText(ombPath + omb); setOmbFile(ombPath + omb); File ombFile = new File(ombPath + omb); if (ombFile.exists()) { txtOmbFile.setBackground(Color.WHITE); btnRefresh.setEnabled(false); comboBoxSelectProject.setEnabled(false); setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); progressBarSimulation.setVisible(true); progressBarSimulation.setStringPainted(true); progressBarSimulation.setIndeterminate(true); refreshTask = new Refresh(); refreshTask.execute(); } else { txtOmbFile.setBackground(new Color(255, 222, 222, 128)); JOptionPane.showMessageDialog(null, "OMB-file not found, please check the file path!", "Error", JOptionPane.ERROR_MESSAGE); } } else { txtOmbFile.setBackground(new Color(255, 222, 222, 128)); JOptionPane.showMessageDialog(null, "Please select an OMB-file!", "Warning", JOptionPane.WARNING_MESSAGE); } } }); btnRefresh.setBounds(616, 61, 124, 23); btnRefresh.setFont(new Font(Font.SANS_SERIF, Font.PLAIN, 11)); add(btnRefresh); lblHelp = new JLabel( "Select an OMB-Object file to run simulations. Limited random simulations can be saved as OMS-Simulation files used for analysis."); lblHelp.setFont(new Font(Font.SANS_SERIF, Font.PLAIN, 11)); lblHelp.setForeground(Color.GRAY); lblHelp.setBounds(10, 10, 730, 14); add(lblHelp); txtOmbFile = new JTextField(); txtOmbFile.setFont(new Font(Font.SANS_SERIF, Font.PLAIN, 11)); txtOmbFile.addFocusListener(new FocusAdapter() { @Override public void focusLost(FocusEvent arg0) { setOmbFile(txtOmbFile.getText()); } }); txtOmbFile.setBounds(152, 33, 454, 20); add(txtOmbFile); txtOmbFile.setColumns(10); btnBrowseOmb = new JButton("Browse"); btnBrowseOmb.setFont(new Font(Font.SANS_SERIF, Font.PLAIN, 11)); btnBrowseOmb.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { JFileChooser fileDialog = new JFileChooser(); fileDialog.setFileFilter(new FileNameExtensionFilter("*.omb", "omb")); fileDialog.showOpenDialog(getParent()); final File file = fileDialog.getSelectedFile(); if (file != null) { String omb; String[] tmpFileName = file.getAbsolutePath().split("\\."); if (tmpFileName[tmpFileName.length - 1].equals("omb")) { omb = ""; } else { omb = ".omb"; } txtOmbFile.setText(file.getAbsolutePath() + omb); setOmbFile(file.getAbsolutePath() + omb); } } }); btnBrowseOmb.setBounds(616, 32, 124, 23); add(btnBrowseOmb); rdbtnSystematic = new JRadioButton("Systematic all campaigns"); rdbtnSystematic.addChangeListener(new ChangeListener() { public void stateChanged(ChangeEvent arg0) { if (rdbtnSystematic.isSelected()) { setSystematic(true); rdbtnRandom.setSelected(false); chckbxRatio6.setEnabled(false); chckbxRatio5.setEnabled(false); chckbxRatio4.setEnabled(false); chckbxRatio3.setEnabled(false); spnrRatio6.setEnabled(false); spnrRatio5.setEnabled(false); spnrRatio4.setEnabled(false); spnrRatio3.setEnabled(false); spnrRandomCampaigns.setEnabled(false); lblRatio.setEnabled(false); lblCampaigns.setEnabled(false); lblOmsFile.setEnabled(false); lblWarning.setVisible(true); txtOmsFile.setEnabled(false); btnBrowseOms.setEnabled(false); } else { setSystematic(false); rdbtnRandom.setSelected(true); } } }); rdbtnSystematic.setBounds(152, 90, 259, 23); rdbtnSystematic.setFont(new Font(Font.SANS_SERIF, Font.PLAIN, 11)); add(rdbtnSystematic); rdbtnRandom = new JRadioButton("Random"); rdbtnRandom.setSelected(true); rdbtnRandom.addChangeListener(new ChangeListener() { public void stateChanged(ChangeEvent e) { if (rdbtnRandom.isSelected()) { setSystematic(false); rdbtnSystematic.setSelected(false); chckbxRatio6.setEnabled(true); chckbxRatio5.setEnabled(true); chckbxRatio4.setEnabled(true); chckbxRatio3.setEnabled(true); spnrRandomCampaigns.setEnabled(true); lblRatio.setEnabled(true); lblCampaigns.setEnabled(true); lblOmsFile.setEnabled(true); lblWarning.setVisible(false); txtOmsFile.setEnabled(true); btnBrowseOms.setEnabled(true); } else { setSystematic(true); rdbtnSystematic.setSelected(true); } } }); rdbtnRandom.setBounds(152, 119, 142, 23); rdbtnRandom.setFont(new Font(Font.SANS_SERIF, Font.PLAIN, 11)); add(rdbtnRandom); comboBoxSelectProject = new JComboBox<OMBuilding>(); comboBoxSelectProject.addPropertyChangeListener(new PropertyChangeListener() { public void propertyChange(PropertyChangeEvent arg0) { boolean b = false; if (comboBoxSelectProject.isEnabled()) { if (comboBoxSelectProject.getSelectedItem() != null) { b = true; setSelectedObject((OMBuilding) comboBoxSelectProject.getSelectedItem()); setProjectName(getSelectedObject().getName()); } else { b = false; } } else { b = false; } progressBarSimulation.setEnabled(b); btnStart.setEnabled(b); chckbxRandomNoise.setEnabled(b); rdbtnRandom.setEnabled(b); rdbtnSystematic.setEnabled(b); lblPercent.setEnabled(b); lblRatio.setEnabled(b); lblSimulationType.setEnabled(b); lblCampaigns.setEnabled(b); } }); comboBoxSelectProject.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { boolean b = false; if (comboBoxSelectProject.isEnabled()) { if (comboBoxSelectProject.getSelectedItem() != null) { b = true; setSelectedObject((OMBuilding) comboBoxSelectProject.getSelectedItem()); setProjectName(getSelectedObject().getName()); } else { b = false; } } else { b = false; } progressBarSimulation.setEnabled(b); btnStart.setEnabled(b); chckbxRandomNoise.setEnabled(b); rdbtnRandom.setEnabled(b); rdbtnSystematic.setEnabled(b); lblPercent.setEnabled(b); lblRatio.setEnabled(b); lblSimulationType.setEnabled(b); lblCampaigns.setEnabled(b); } }); comboBoxSelectProject.setBounds(152, 61, 454, 22); comboBoxSelectProject.setFont(new Font(Font.SANS_SERIF, Font.PLAIN, 11)); add(comboBoxSelectProject); btnStart.setEnabled(false); chckbxRandomNoise.setEnabled(false); chckbxRatio6.setEnabled(false); chckbxRatio5.setEnabled(false); chckbxRatio4.setEnabled(false); chckbxRatio3.setEnabled(false); spnrRandomNoise.setEnabled(false); spnrRatio6.setEnabled(false); spnrRatio5.setEnabled(false); spnrRatio4.setEnabled(false); spnrRatio3.setEnabled(false); spnrRandomCampaigns.setEnabled(false); rdbtnRandom.setEnabled(false); rdbtnSystematic.setEnabled(false); lblPercent.setEnabled(false); lblRatio.setEnabled(false); lblSimulationType.setEnabled(false); lblCampaigns.setEnabled(false); lblOmsFile.setEnabled(false); txtOmsFile.setEnabled(false); btnBrowseOms.setEnabled(false); spnrRatio6.setValue(73); spnrRatio5.setValue(20); spnrRatio4.setValue(5); spnrRatio3.setValue(2); spnrRandomNoise.setValue(5); lblWarning.setVisible(false); }
From source file:atlas.kingj.roi.FrmMain.java
/** * Initialize the contents of the frame. *///w w w . j av a2s .co m private void initialize() { frmTitanRoiCalculator = new JFrame(); frmTitanRoiCalculator.addWindowListener(new FrmTitanRoiCalculatorWindowListener()); frmTitanRoiCalculator.setResizable(false); frmTitanRoiCalculator.setTitle("Titan Production Calculator"); try { frmTitanRoiCalculator.setIconImage(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/logo.png")));//Toolkit.getDefaultToolkit().getImage(FrmMain.class.getResource("/atlas/logo.png"))); } catch (NullPointerException e) { System.out.println("Image load error"); } catch (IOException e1) { e1.printStackTrace(); } frmTitanRoiCalculator.setBounds(100, 100, 800, 600); frmTitanRoiCalculator.setLocationRelativeTo(null); frmTitanRoiCalculator.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);//JFrame.EXIT_ON_CLOSE); JMenuBar menuBar = new JMenuBar(); frmTitanRoiCalculator.setJMenuBar(menuBar); JMenu mnFile = new JMenu("File"); mnFile.setMnemonic('F'); menuBar.add(mnFile); mntmOpen = new JMenuItem("Open"); mntmOpen.setMnemonic('O'); mntmOpen.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, InputEvent.CTRL_MASK)); mntmOpen.addActionListener(new MntmOpenActionListener()); mnFile.add(mntmOpen); mntmSave = new JMenuItem("Save"); mntmSave.setMnemonic('S'); mntmSave.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, InputEvent.CTRL_MASK)); mntmSave.addActionListener(new MntmSaveActionListener()); mnFile.add(mntmSave); JMenuItem mntmExit = new JMenuItem("Exit"); mntmExit.setMnemonic('X'); mntmExit.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { SaveAndClose(); } }); mntmSaveAll = new JMenuItem("Save All"); mntmSaveAll.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { SaveAll(); } }); mntmOpenAll = new JMenuItem("Open All"); mntmOpenAll.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { OpenAll(); } }); mnFile.add(mntmOpenAll); mntmSaveAll.setMnemonic('V'); mnFile.add(mntmSaveAll); mnExport = new JMenu("Export"); mnFile.add(mnExport); mntmSpreadsheet = new JMenuItem("Spreadsheet"); mntmSpreadsheet.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { ResetStatusLabel(); fc = new OpenSaveFileChooser(); fc.setFileFilter(new XLSfilter()); fc.type = 3; int returnVal = fc.showSaveDialog(frmTitanRoiCalculator); if (returnVal == JFileChooser.APPROVE_OPTION) { File file = fc.getSelectedFile(); String path = file.getAbsolutePath(); String extension = ".xls"; if (!path.endsWith(extension)) { file = new File(path + extension); } StatusDialog a = new StatusDialog("Generating spreadsheet..."); SaveFileWorker worker = new SaveFileWorker(file, a, false); worker.execute(); a.setLocationRelativeTo(frmTitanRoiCalculator); a.setVisible(true); if (FileSaveError) ShowMessage("File save error"); else if (FileSaveWarning) ShowMessage("File saved, but possible errors."); else ShowMessageSuccess("File saved."); } } }); mnExport.add(mntmSpreadsheet); mnFile.add(mntmExit); JMenu mnView = new JMenu("View"); mnView.setMnemonic('V'); menuBar.add(mnView); RoiData = new ROIData(); mntmUnitConverter = new JMenuItem("Unit Converter"); mntmUnitConverter.setMnemonic('C'); mntmUnitConverter.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_U, InputEvent.CTRL_MASK)); mntmUnitConverter.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { new UnitConverter(); } }); mnView.add(mntmUnitConverter); mnSettings = new JMenu("Settings"); mnSettings.setMnemonic('E'); menuBar.add(mnSettings); mnUnits = new JMenu("Units"); mnUnits.setMnemonic('U'); mnSettings.add(mnUnits); rdbtnmntmImperial = new JRadioButtonMenuItem("Imperial"); rdbtnmntmImperial.setMnemonic('I'); rdbtnmntmImperial.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_I, InputEvent.CTRL_MASK)); rdbtnmntmImperial.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { if (metric) { // Change units from metric to imperial ChangeUnits(); } } }); mnUnits.add(rdbtnmntmImperial); rdbtnmntmMetric = new JRadioButtonMenuItem("Metric"); rdbtnmntmMetric.setMnemonic('M'); rdbtnmntmMetric.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_M, InputEvent.CTRL_MASK)); rdbtnmntmMetric.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (!metric) { // Change units from imperial to metric ChangeUnits(); } } }); rdbtnmntmMetric.setSelected(true); mnUnits.add(rdbtnmntmMetric); btnsUnits.add(rdbtnmntmMetric); btnsUnits.add(rdbtnmntmImperial); JMenuItem mntmOptions_1 = new JMenuItem("Options"); mntmOptions_1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_T, InputEvent.CTRL_MASK)); mntmOptions_1.setMnemonic('O'); mntmOptions_1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { Machine machine = null; if (listMachines.getSelectedIndex() > -1) machine = (Machine) listMachines.getSelectedValue(); OptionDialog options = new OptionDialog(environment, machine); options.setLocationRelativeTo(frmTitanRoiCalculator); options.addWindowListener(new WindowAdapter() { @Override public void windowClosed(WindowEvent e) { UpdateAnalysis(); } }); options.setVisible(true); } }); mnTimings = new JMenu("Timings"); mnSettings.add(mnTimings); mntmSaveToFile = new JMenuItem("Save to File"); mntmSaveToFile.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { OperatorTimings times = environment.timings; fc = new OpenSaveFileChooser(); fc.setFileFilter(new OBJfilter(3)); fc.type = 1; int returnVal = fc.showSaveDialog(frmTitanRoiCalculator); if (returnVal == JFileChooser.APPROVE_OPTION) { File file = fc.getSelectedFile(); String path = file.getAbsolutePath(); String extension = ".ser"; if (!path.endsWith(extension)) { file = new File(path + extension); } try { FileOutputStream fout = new FileOutputStream(file); ObjectOutputStream oos = new ObjectOutputStream(fout); oos.writeObject(times); oos.close(); ShowMessageSuccess("File saved."); } catch (Exception e1) { JOptionPane.showMessageDialog(frmTitanRoiCalculator, "Error writing file.", "Error", JOptionPane.ERROR_MESSAGE); } } } }); mnTimings.add(mntmSaveToFile); mntmLoadFromFile = new JMenuItem("Load from File"); mntmLoadFromFile.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { fc = new OpenSaveFileChooser(); fc.setFileFilter(new OBJfilter(3)); fc.type = 1; int returnVal = fc.showOpenDialog(frmTitanRoiCalculator); if (returnVal == JFileChooser.APPROVE_OPTION) { File file = fc.getSelectedFile(); try { FileInputStream fin = new FileInputStream(file); ObjectInputStream ois = new ObjectInputStream(fin); environment.timings = (OperatorTimings) ois.readObject(); ois.close(); ShowMessageSuccess("File loaded."); } catch (Exception e1) { ShowMessage("File error."); } } } }); mnTimings.add(mntmLoadFromFile); mnSettings.add(mntmOptions_1); JMenu mnHelp = new JMenu("Help"); mnHelp.setMnemonic('H'); menuBar.add(mnHelp); JMenuItem mntmInstructions = new JMenuItem("Instructions"); mntmInstructions.setMnemonic('I'); mntmInstructions.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { InstructDialog instructions = new InstructDialog(); instructions.setLocationRelativeTo(frmTitanRoiCalculator); instructions.setVisible(true); } }); mnHelp.add(mntmInstructions); JMenuItem mntmAbout = new JMenuItem("About"); mntmAbout.setMnemonic('A'); mntmAbout.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { AboutDialog about = new AboutDialog(); about.setLocationRelativeTo(frmTitanRoiCalculator); about.setVisible(true); } }); mnHelp.add(mntmAbout); tabbedPane = new JTabbedPane(JTabbedPane.TOP); tabbedPane.addChangeListener(TabChangeListener); frmTitanRoiCalculator.getContentPane().add(tabbedPane, BorderLayout.CENTER); pnlMachine = new JPanel(); tabbedPane.addTab("Machine Selection", null, pnlMachine, "Add and configure machine setups"); tabbedPane.setEnabledAt(0, true); pnlMachine.setLayout(null); grpMachines = new JPanel(); grpMachines.setFont(new Font("Tahoma", Font.PLAIN, 11)); grpMachines.setBounds(20, 72, 182, 256); grpMachines.setBorder( new TitledBorder(null, "Machine Type", TitledBorder.LEADING, TitledBorder.TOP, null, null)); pnlMachine.add(grpMachines); grpMachines.setLayout(null); try { rdbtnER610 = new JRadioButton( new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/er610.png")))); rdbtnER610.setDisabledIcon( new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/er610_dis.png")))); rdbtnER610.setDisabledSelectedIcon( new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/er610_dis.png")))); rdbtnER610.setEnabled(false); rdbtnER610.setToolTipText("Titan ER610"); } catch (NullPointerException e1) { System.out.println("Image load error"); } catch (IOException e1) { e1.printStackTrace(); } rdbtnER610.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { rdbtnClick("ER610"); UpdateMachine(); listMachines.repaint(); } }); rdbtnER610.setSelected(true); rdbtnER610.setBounds(13, 24, 155, 40); try { rdbtnER610.setPressedIcon( new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/er610_down.png")))); rdbtnER610.setRolloverEnabled(true); rdbtnER610.setRolloverIcon( new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/er610_over.png")))); rdbtnER610.setSelectedIcon( new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/er610_select.png")))); } catch (NullPointerException e11) { System.out.println("Image load error"); } catch (IOException e1) { e1.printStackTrace(); } grpMachines.add(rdbtnER610); try { rdbtnSR9DS = new JRadioButton( new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/sr9ds.png")))); rdbtnSR9DS.setDisabledIcon( new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/sr9ds_dis.png")))); rdbtnSR9DS.setEnabled(false); rdbtnSR9DS.setToolTipText("Titan SR9-DS"); } catch (NullPointerException e11) { System.out.println("Image load error"); } catch (IOException e1) { e1.printStackTrace(); } rdbtnSR9DS.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { rdbtnClick("SR9DS"); UpdateMachine(); listMachines.repaint(); } }); try { rdbtnSR9DS.setPressedIcon( new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/sr9ds_down.png")))); rdbtnSR9DS.setRolloverEnabled(true); rdbtnSR9DS.setRolloverIcon( new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/sr9ds_over.png")))); rdbtnSR9DS.setSelectedIcon( new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/sr9ds_select.png")))); rdbtnSR9DS.setBounds(13, 68, 155, 40); grpMachines.add(rdbtnSR9DS); rdbtnSR9DT = new JRadioButton( new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/sr9dt.png")))); rdbtnSR9DT.setDisabledIcon( new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/sr9dt_dis.png")))); rdbtnSR9DT.setEnabled(false); rdbtnSR9DT.setToolTipText("Titan SR9-DT"); } catch (NullPointerException e11) { System.out.println("Image load error"); } catch (IOException e1) { e1.printStackTrace(); } rdbtnSR9DT.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { rdbtnClick("SR9DT"); UpdateMachine(); listMachines.repaint(); } }); rdbtnSR9DT.setBounds(13, 112, 155, 40); try { rdbtnSR9DT.setPressedIcon( new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/sr9dt_down.png")))); rdbtnSR9DT.setRolloverEnabled(true); rdbtnSR9DT.setRolloverIcon( new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/sr9dt_over.png")))); rdbtnSR9DT.setSelectedIcon( new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/sr9dt_select.png")))); } catch (NullPointerException e11) { System.out.println("Image load error"); } catch (IOException e1) { e1.printStackTrace(); } grpMachines.add(rdbtnSR9DT); try { rdbtnSR800 = new JRadioButton( new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/sr800.png")))); rdbtnSR800.setDisabledIcon( new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/sr800_dis.png")))); rdbtnSR800.setEnabled(false); rdbtnSR800.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { rdbtnClick("SR800"); UpdateMachine(); listMachines.repaint(); } }); rdbtnSR800.setPressedIcon( new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/sr800_down.png")))); rdbtnSR800.setRolloverEnabled(true); rdbtnSR800.setRolloverIcon( new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/sr800_over.png")))); rdbtnSR800.setSelectedIcon( new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/sr800_select.png")))); } catch (IOException e2) { e2.printStackTrace(); } rdbtnSR800.setToolTipText("Titan SR800"); rdbtnSR800.setRolloverEnabled(true); rdbtnSR800.setBounds(13, 156, 155, 40); grpMachines.add(rdbtnSR800); try { rdbtnCustom = new JRadioButton( new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/custom.png")))); rdbtnCustom.setDisabledIcon( new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/custom_dis.png")))); rdbtnCustom.setEnabled(false); rdbtnCustom.setPressedIcon( new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/custom_down.png")))); rdbtnCustom.setRolloverEnabled(true); rdbtnCustom.setRolloverIcon( new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/custom_over.png")))); rdbtnCustom.setSelectedIcon( new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/custom_select.png")))); } catch (IOException e2) { e2.printStackTrace(); } rdbtnCustom.setToolTipText("Custom Machine"); rdbtnCustom.setRolloverEnabled(true); rdbtnCustom.setBounds(13, 200, 155, 40); grpMachines.add(rdbtnCustom); rdbtnCustom.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { rdbtnClick("Custom"); UpdateMachine(); ResetStatusLabel(); listMachines.repaint(); } }); rdbtnsMachines.add(rdbtnER610); rdbtnsMachines.add(rdbtnSR9DS); rdbtnsMachines.add(rdbtnSR9DT); rdbtnsMachines.add(rdbtnSR800); rdbtnsMachines.add(rdbtnCustom); grpVariants = new JPanel(); grpVariants.setFont(new Font("Tahoma", Font.PLAIN, 11)); grpVariants.setBounds(20, 339, 482, 112); grpVariants .setBorder(new TitledBorder(null, "Variants", TitledBorder.LEADING, TitledBorder.TOP, null, null)); pnlMachine.add(grpVariants); grpVariants.setLayout(null); cmbCorepos = new JComboBox(); cmbCorepos.setFont(new Font("Tahoma", Font.PLAIN, 11)); cmbCorepos.setToolTipText("Set the core positioning system"); cmbCorepos.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (formReady) UpdateMachine(); } }); cmbCorepos.setEnabled(false); cmbCorepos.setBounds(104, 70, 122, 20); grpVariants.add(cmbCorepos); cmbCorepos.setModel(new DefaultComboBoxModel(new String[] { "Manual", "Laser" })); lblCorePositioning = new JLabel("Core Positioning:"); lblCorePositioning.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblCorePositioning.setToolTipText("Set the core positioning system"); lblCorePositioning.setEnabled(false); lblCorePositioning.setHorizontalAlignment(SwingConstants.RIGHT); lblCorePositioning.setBounds(12, 73, 88, 14); grpVariants.add(lblCorePositioning); lblKnifeControl = new JLabel("Knife Control:"); lblKnifeControl.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblKnifeControl.setToolTipText("Set the type of knife positioning system"); lblKnifeControl.setEnabled(false); lblKnifeControl.setHorizontalAlignment(SwingConstants.RIGHT); lblKnifeControl.setBounds(22, 48, 78, 14); grpVariants.add(lblKnifeControl); cmbKnives = new JComboBox(); cmbKnives.setFont(new Font("Tahoma", Font.PLAIN, 11)); cmbKnives.setToolTipText("Set the type of knife positioning system"); cmbKnives.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (formReady) UpdateMachine(); } }); cmbKnives.setEnabled(false); cmbKnives.setBounds(104, 45, 122, 20); grpVariants.add(cmbKnives); cmbKnives.setModel(new DefaultComboBoxModel(new String[] { "Manual", "Auto" })); cmbUnloader = new JComboBox(); cmbUnloader.setFont(new Font("Tahoma", Font.PLAIN, 11)); cmbUnloader.setToolTipText("Set the unloader type"); cmbUnloader.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (formReady) UpdateMachine(); } }); cmbUnloader.setEnabled(false); cmbUnloader.setBounds(350, 20, 122, 20); grpVariants.add(cmbUnloader); cmbUnloader.setModel(new DefaultComboBoxModel(new String[] { "Manual", "Pneumatic", "Electric" })); lblUnloader = new JLabel("Unloader:"); lblUnloader.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblUnloader.setToolTipText("Set the unloader type"); lblUnloader.setEnabled(false); lblUnloader.setHorizontalAlignment(SwingConstants.RIGHT); lblUnloader.setBounds(259, 23, 87, 14); grpVariants.add(lblUnloader); cmbSpeed = new JComboBox(); cmbSpeed.setFont(new Font("Tahoma", Font.PLAIN, 11)); cmbSpeed.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { if (formReady) UpdateMachine(); } }); cmbSpeed.setEnabled(false); cmbSpeed.setToolTipText("Machine top speed in metres/min"); cmbSpeed.setBounds(104, 20, 122, 20); grpVariants.add(cmbSpeed); cmbSpeed.setModel(new DefaultComboBoxModel(new String[] { "450", "550" })); lblSpeed = new JLabel("Speed:"); lblSpeed.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblSpeed.setToolTipText("Machine top speed in metres/min"); lblSpeed.setEnabled(false); lblSpeed.setHorizontalAlignment(SwingConstants.RIGHT); lblSpeed.setBounds(54, 23, 46, 14); grpVariants.add(lblSpeed); cmbUnwindDrive = new JComboBox(); cmbUnwindDrive.setFont(new Font("Tahoma", Font.PLAIN, 11)); cmbUnwindDrive.setToolTipText("Unwind drive type"); cmbUnwindDrive.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (formReady) UpdateMachine(); } }); cmbUnwindDrive.setEnabled(false); cmbUnwindDrive.setBounds(350, 45, 122, 20); grpVariants.add(cmbUnwindDrive); cmbUnwindDrive.setModel(new DefaultComboBoxModel(new String[] { "Single", "Double" })); lblUnwindDrive = new JLabel("Unwind Drive:"); lblUnwindDrive.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblUnwindDrive.setToolTipText("Unwind drive type"); lblUnwindDrive.setEnabled(false); lblUnwindDrive.setHorizontalAlignment(SwingConstants.RIGHT); lblUnwindDrive.setBounds(259, 48, 87, 14); grpVariants.add(lblUnwindDrive); lblRewindControlLoop = new JLabel("Rewind Control Loop:"); lblRewindControlLoop.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblRewindControlLoop.setToolTipText("Rewind control loop type"); lblRewindControlLoop.setEnabled(false); lblRewindControlLoop.setHorizontalAlignment(SwingConstants.RIGHT); lblRewindControlLoop.setBounds(224, 73, 122, 14); grpVariants.add(lblRewindControlLoop); cmbRewindCtrl = new JComboBox(); cmbRewindCtrl.setFont(new Font("Tahoma", Font.PLAIN, 11)); cmbRewindCtrl.setToolTipText("Rewind control loop type"); cmbRewindCtrl.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (formReady) UpdateMachine(); } }); cmbRewindCtrl.setEnabled(false); cmbRewindCtrl.setBounds(350, 70, 122, 20); grpVariants.add(cmbRewindCtrl); cmbRewindCtrl.setModel(new DefaultComboBoxModel(new String[] { "Open", "Closed" })); listModel = new DefaultListModel(); jobModel = new DefaultListModel(); scheduleModel = new DefaultListModel(); listModel.removeAllElements(); /*listMachines.setModel(new AbstractListModel() { String[] values = new String[] {"ER610: My test 1", "SR9-DS: this is another test", "SR9-DT: third test", "ER610: test 2", "ER610: bla bla", "SR9-DS: this is another test", "SR9-DT: hello", "SR9-DT: third test"}; public int getSize() { return values.length; } public Object getElementAt(int index) { return values[index]; } });*/ JLabel lblMachines = new JLabel("Machines"); lblMachines.setFont(new Font("Tahoma", Font.BOLD, 12)); lblMachines.setBounds(522, 19, 85, 14); pnlMachine.add(lblMachines); btnMachDelete = new JButton(""); try { btnMachDelete .setIcon(new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/delete.png")))); btnMachDelete.setRolloverEnabled(true); btnMachDelete.setRolloverIcon( new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/delete_over.png")))); btnMachDelete.setDisabledIcon( new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/delete_dis.png")))); } catch (NullPointerException e11) { System.out.println("Image load error"); } catch (IOException e1) { e1.printStackTrace(); } btnMachDelete.setToolTipText("Delete machine"); btnMachDelete.setEnabled(false); btnMachDelete.addActionListener(new DeleteButtonListener()); btnMachDelete.setBounds(651, 460, 36, 36); pnlMachine.add(btnMachDelete); btnMachUp = new JButton(""); btnMachUp.setToolTipText("Move machine up"); btnMachUp.setEnabled(false); try { btnMachUp.setIcon(new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/up.png")))); btnMachUp.setRolloverEnabled(true); btnMachUp.setRolloverIcon( new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/up_over.png")))); btnMachUp.setDisabledIcon( new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/up_dis.png")))); } catch (NullPointerException e11) { System.out.println("Image load error"); } catch (IOException e1) { e1.printStackTrace(); } btnMachUp.addActionListener(new UpListener()); btnMachUp.setBounds(700, 463, 30, 30); pnlMachine.add(btnMachUp); btnMachDown = new JButton(""); btnMachDown.setToolTipText("Move machine down"); btnMachDown.setEnabled(false); try { btnMachDown.setIcon(new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/down.png")))); btnMachDown.setRolloverEnabled(true); btnMachDown.setRolloverIcon( new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/down_over.png")))); btnMachDown.setDisabledIcon( new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/down_dis.png")))); } catch (NullPointerException e11) { System.out.println("Image load error"); } catch (IOException e1) { e1.printStackTrace(); } btnMachDown.addActionListener(new DownListener()); btnMachDown.setBounds(737, 463, 30, 30); pnlMachine.add(btnMachDown); btnMachReset = new JButton("Reset"); btnMachReset.setFont(new Font("Tahoma", Font.PLAIN, 11)); btnMachReset.setEnabled(false); btnMachReset.setToolTipText("Reset the form"); btnMachReset.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { ResetForm(); } }); btnMachReset.setBounds(20, 460, 100, 36); pnlMachine.add(btnMachReset); /*txtMachName.addKeyListener(new KeyAdapter() { @Override public void keyPressed(KeyEvent e) { int key = e.getKeyCode(); if (e.getKeyCode() == KeyEvent.VK_ENTER) btnAddMachine.doClick(); } });*/ btnNewMachine = new JButton("Add New"); btnNewMachine.setFont(new Font("Tahoma", Font.BOLD, 11)); btnNewMachine.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { formReady = false; ResetStatusLabel(); int index = listMachines.getSelectedIndex(); int size = listModel.getSize(); if (size >= Consts.MACH_LIST_LIMIT) { // Max list size ShowMessage( "Maximum number of machines allocated. Please delete before attempting to add more."); return; } String newName = getUniqueName("Machine"); txtMachName.setText(newName); machine = new Machine(newName); machNames.add(newName.toLowerCase()); //If no selection or if item in last position is selected, //add the new one to end of list, and select new one. if (index == -1 || (index + 1 == size)) { listModel.addElement(machine); listMachines.setSelectedIndex(size); RoiData.energies.add(RoiData.new EnergyData()); RoiData.maintenance.add(RoiData.new MaintData()); listCompare.addSelectionInterval(size, size); //Otherwise insert the new one after the current selection, //and select new one. } else { int[] sel = listCompare.getSelectedIndices(); int[] selection = new int[sel.length + 1]; System.arraycopy(sel, 0, selection, 0, sel.length); listCompare.setSelectedIndices(new int[] {}); listModel.insertElementAt(machine, index + 1); boolean max = false; for (int i = 0; i < selection.length; i++) { if (selection[i] >= index + 1 && !max) { if (i < selection.length - 1) System.arraycopy(selection, i, selection, i + 1, selection.length - i - 1); selection[i] = index + 1; max = true; } else if (selection[i] >= index + 1) selection[i] = selection[i] + 1; } RoiData.energies.add(index + 1, RoiData.new EnergyData()); RoiData.maintenance.add(index + 1, RoiData.new MaintData()); listCompare.setSelectedIndices(selection); //listCompareRoi.setSelectedIndices(selection); listMachines.setSelectedIndex(index + 1); //listCompare.addSelectionInterval(index + 1, index + 1); } ResetStatusLabel(); //UpdateForm(); already triggered in listchanged formReady = true; txtMachName.requestFocusInWindow(); } }); try { btnNewMachine .setIcon(new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/plus.png")))); } catch (IOException e1) { e1.printStackTrace(); } btnNewMachine.setToolTipText("Add new machine"); btnNewMachine.setBounds(522, 460, 110, 36); pnlMachine.add(btnNewMachine); grpOptions = new JPanel(); grpOptions.setFont(new Font("Tahoma", Font.PLAIN, 11)); grpOptions.setBounds(212, 72, 290, 256); pnlMachine.add(grpOptions); grpOptions.setBorder(new TitledBorder(UIManager.getBorder("TitledBorder.border"), "Options", TitledBorder.LEADING, TitledBorder.TOP, null, null)); grpOptions.setLayout(null); chckbxFlag = new JCheckBox("Flag Detection"); chckbxFlag.setFont(new Font("Tahoma", Font.PLAIN, 11)); chckbxFlag.setToolTipText("Whether an automatic flag detection system is used"); chckbxFlag.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (formReady) UpdateMachine(); if (!chckbxFlag.isSelected()) chckbxSelectAll.setSelected(false); else UpdateSelectAllChckbx(); } }); chckbxFlag.setEnabled(false); chckbxFlag.setBounds(155, 104, 109, 23); grpOptions.add(chckbxFlag); chckbxSpliceTable = new JCheckBox("Splice Table"); chckbxSpliceTable.setFont(new Font("Tahoma", Font.PLAIN, 11)); chckbxSpliceTable.setToolTipText("Whether a splice table is fitted"); chckbxSpliceTable.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (formReady) UpdateMachine(); if (!chckbxSpliceTable.isSelected()) chckbxSelectAll.setSelected(false); else UpdateSelectAllChckbx(); } }); chckbxSpliceTable.setEnabled(false); chckbxSpliceTable.setBounds(22, 104, 109, 23); grpOptions.add(chckbxSpliceTable); chckbxAlignmentGuide = new JCheckBox("Alignment Guide"); chckbxAlignmentGuide.setFont(new Font("Tahoma", Font.PLAIN, 11)); chckbxAlignmentGuide.setToolTipText("Whether an alignment guide is fitted"); chckbxAlignmentGuide.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (formReady) UpdateMachine(); if (!chckbxAlignmentGuide.isSelected()) chckbxSelectAll.setSelected(false); else UpdateSelectAllChckbx(); } }); chckbxAlignmentGuide.setEnabled(false); chckbxAlignmentGuide.setBounds(22, 130, 127, 23); grpOptions.add(chckbxAlignmentGuide); chckbxRollConditioning = new JCheckBox("Roll Conditioning"); chckbxRollConditioning.setFont(new Font("Tahoma", Font.PLAIN, 11)); chckbxRollConditioning.setToolTipText("Whether the machine supports roll conditioning"); chckbxRollConditioning.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (formReady) UpdateMachine(); if (!chckbxRollConditioning.isSelected()) chckbxSelectAll.setSelected(false); else UpdateSelectAllChckbx(); } }); chckbxRollConditioning.setEnabled(false); chckbxRollConditioning.setBounds(22, 156, 127, 23); grpOptions.add(chckbxRollConditioning); chckbxTurretSupport = new JCheckBox("Turret Support"); chckbxTurretSupport.setFont(new Font("Tahoma", Font.PLAIN, 11)); chckbxTurretSupport.setToolTipText("For dual turret machines: extra turret support"); chckbxTurretSupport.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (formReady) UpdateMachine(); if (!chckbxTurretSupport.isSelected()) chckbxSelectAll.setSelected(false); else UpdateSelectAllChckbx(); } }); chckbxTurretSupport.setEnabled(false); chckbxTurretSupport.setBounds(22, 182, 127, 23); grpOptions.add(chckbxTurretSupport); chckbxAutostripping = new JCheckBox("Autostripping"); chckbxAutostripping.setFont(new Font("Tahoma", Font.PLAIN, 11)); chckbxAutostripping.setToolTipText("Whether an autostripping feature is present for reel unloading"); chckbxAutostripping.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (formReady) UpdateMachine(); if (!chckbxAutostripping.isSelected()) chckbxSelectAll.setSelected(false); else UpdateSelectAllChckbx(); } }); chckbxAutostripping.setEnabled(false); chckbxAutostripping.setBounds(22, 208, 97, 23); grpOptions.add(chckbxAutostripping); chckbxExtraRewind = new JCheckBox("850mm Rewind"); chckbxExtraRewind.setFont(new Font("Tahoma", Font.PLAIN, 11)); chckbxExtraRewind.setToolTipText("Extra wide 850mm max diameter rewind support"); chckbxExtraRewind.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (formReady) UpdateMachine(); if (!chckbxExtraRewind.isSelected()) chckbxSelectAll.setSelected(false); else UpdateSelectAllChckbx(); } }); chckbxExtraRewind.setEnabled(false); chckbxExtraRewind.setBounds(155, 208, 109, 23); grpOptions.add(chckbxExtraRewind); chckbxAutoCutoff = new JCheckBox("Auto Cut-off"); chckbxAutoCutoff.setFont(new Font("Tahoma", Font.PLAIN, 11)); chckbxAutoCutoff.setToolTipText("Whether the web is cut automatically when a run completes"); chckbxAutoCutoff.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (formReady) UpdateMachine(); if (!chckbxAutoCutoff.isSelected()) chckbxSelectAll.setSelected(false); else UpdateSelectAllChckbx(); } }); chckbxAutoCutoff.setEnabled(false); chckbxAutoCutoff.setBounds(155, 130, 109, 23); grpOptions.add(chckbxAutoCutoff); chckbxAutoTapeCore = new JCheckBox("Auto Tape Core"); chckbxAutoTapeCore.setFont(new Font("Tahoma", Font.PLAIN, 11)); chckbxAutoTapeCore.setToolTipText("Whether new reels are automatically taped before a run begins"); chckbxAutoTapeCore.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (formReady) UpdateMachine(); if (!chckbxAutoTapeCore.isSelected()) chckbxSelectAll.setSelected(false); else UpdateSelectAllChckbx(); } }); chckbxAutoTapeCore.setEnabled(false); chckbxAutoTapeCore.setBounds(155, 156, 109, 23); grpOptions.add(chckbxAutoTapeCore); chckbxAutoTapeTail = new JCheckBox("Auto Tape Tail"); chckbxAutoTapeTail.setFont(new Font("Tahoma", Font.PLAIN, 11)); chckbxAutoTapeTail.setToolTipText("Whether the tails of completed reels are automatically taped down"); chckbxAutoTapeTail.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (formReady) UpdateMachine(); if (!chckbxAutoTapeTail.isSelected()) chckbxSelectAll.setSelected(false); else UpdateSelectAllChckbx(); } }); chckbxAutoTapeTail.setEnabled(false); chckbxAutoTapeTail.setBounds(155, 182, 109, 23); grpOptions.add(chckbxAutoTapeTail); txtMachName = new JTextField(); txtMachName.addFocusListener(new FocusAdapter() { @Override public void focusGained(FocusEvent e) { txtMachName.selectAll(); } }); txtMachName.getDocument().addDocumentListener(new DocumentListener() { @Override public void changedUpdate(DocumentEvent arg0) { } @Override public void insertUpdate(DocumentEvent arg0) { UpdateMachineName(); } @Override public void removeUpdate(DocumentEvent arg0) { UpdateMachineName(); } }); txtMachName.setEnabled(false); txtMachName.setBounds(125, 35, 137, 28); grpOptions.add(txtMachName); txtMachName.getDocument().addDocumentListener(new DocumentListener() { public void changedUpdate(DocumentEvent e) { } public void removeUpdate(DocumentEvent e) { // text was deleted } public void insertUpdate(DocumentEvent e) { // text was inserted } }); txtMachName.setToolTipText("Enter a name to refer to this particular machine by"); txtMachName.setFont(new Font("Tahoma", Font.BOLD, 12)); txtMachName.setColumns(10); lblMachName = new JLabel("Machine name:"); lblMachName.setToolTipText("Enter a name to refer to this particular machine by"); lblMachName.setEnabled(false); lblMachName.setBounds(26, 36, 91, 24); grpOptions.add(lblMachName); lblMachName.setFont(new Font("Tahoma", Font.PLAIN, 13)); chckbxSelectAll = new JCheckBox("Select All"); chckbxSelectAll.setFont(new Font("Tahoma", Font.PLAIN, 11)); chckbxSelectAll.setToolTipText("Select all available options"); chckbxSelectAll.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (chckbxSelectAll.isSelected()) { if (chckbxAlignmentGuide.isEnabled()) chckbxAlignmentGuide.setSelected(true); if (chckbxAutoCutoff.isEnabled()) chckbxAutoCutoff.setSelected(true); if (chckbxAutostripping.isEnabled()) chckbxAutostripping.setSelected(true); if (chckbxAutoTapeCore.isEnabled()) chckbxAutoTapeCore.setSelected(true); if (chckbxAutoTapeTail.isEnabled()) chckbxAutoTapeTail.setSelected(true); if (chckbxExtraRewind.isEnabled()) chckbxExtraRewind.setSelected(true); if (chckbxFlag.isEnabled()) chckbxFlag.setSelected(true); if (chckbxRollConditioning.isEnabled()) chckbxRollConditioning.setSelected(true); if (chckbxSpliceTable.isEnabled()) chckbxSpliceTable.setSelected(true); if (chckbxTurretSupport.isEnabled()) chckbxTurretSupport.setSelected(true); } else { chckbxAlignmentGuide.setSelected(false); chckbxAutoCutoff.setSelected(false); chckbxAutostripping.setSelected(false); chckbxAutoTapeCore.setSelected(false); chckbxAutoTapeTail.setSelected(false); chckbxExtraRewind.setSelected(false); chckbxFlag.setSelected(false); chckbxRollConditioning.setSelected(false); chckbxSpliceTable.setSelected(false); chckbxTurretSupport.setSelected(false); } if (formReady) UpdateMachine(); } }); chckbxSelectAll.setEnabled(false); chckbxSelectAll.setBounds(22, 78, 97, 23); grpOptions.add(chckbxSelectAll); lblMachineConfiguration = new JLabel("Machine Configuration"); lblMachineConfiguration.setFont(new Font("Tahoma", Font.BOLD, 18)); lblMachineConfiguration.setBounds(29, 18, 269, 22); pnlMachine.add(lblMachineConfiguration); lblAddNewMachines = new JLabel( "Add new machines to the list on the right, then configure their options and variants below"); lblAddNewMachines.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblAddNewMachines.setBounds(29, 45, 433, 14); pnlMachine.add(lblAddNewMachines); btnCustomMachine = new JButton("Custom Machine Options"); btnCustomMachine.setEnabled(false); btnCustomMachine.setFont(new Font("Tahoma", Font.PLAIN, 11)); btnCustomMachine.setBounds(322, 460, 180, 36); pnlMachine.add(btnCustomMachine); btnCustomMachine.setToolTipText("Edit settings for a custom machine type"); scrollPane = new JScrollPane(); scrollPane.setBorder(null); scrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER); scrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER); scrollPane.setBounds(522, 44, 245, 405); pnlMachine.add(scrollPane); panel_6 = new JPanel(); panel_6.setBorder(new SoftBevelBorder(BevelBorder.LOWERED, new Color(192, 192, 192), null, null, null)); panel_6.setBackground(Color.WHITE); panel_6.setToolTipText("Select a machine to edit options, re-order, or delete"); scrollPane.setViewportView(panel_6); panel_6.setLayout(new BorderLayout(0, 0)); //Create the list and put it in a scroll pane. listMachines = new JList(listModel); panel_6.add(listMachines, BorderLayout.NORTH); listMachines.addListSelectionListener(new MachineListSelectionListener()); listMachines.setCellRenderer(new MachineListRenderer()); listMachines.setBorder(null); listMachines.setToolTipText("Select a machine to edit options, re-order, or delete"); listMachines.setFont(new Font("Tahoma", Font.PLAIN, 13)); listMachines.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); btnOverrideDefaultAcceleration = new JButton("Override Default Acceleration"); btnOverrideDefaultAcceleration.setFont(new Font("Tahoma", Font.PLAIN, 11)); btnOverrideDefaultAcceleration .setToolTipText("Set new values for the acceleration/deceleration of this machine"); btnOverrideDefaultAcceleration.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { try { // check list selected listMachines.getSelectedIndex(); } catch (Exception e2) { return; } Machine currMachine = (Machine) listMachines.getSelectedValue(); AccelDecel dialog = new AccelDecel(currMachine); dialog.setLocationRelativeTo(frmTitanRoiCalculator); dialog.setVisible(true); } }); btnOverrideDefaultAcceleration.setEnabled(false); btnOverrideDefaultAcceleration.setBounds(130, 460, 182, 36); pnlMachine.add(btnOverrideDefaultAcceleration); btnCustomMachine.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { ResetStatusLabel(); //rdbtnOther.doClick(); MachineBuilder newmach = new MachineBuilder(machine); newmach.setLocationRelativeTo(frmTitanRoiCalculator); newmach.setVisible(true); } }); pnlJob = new JPanel(); tabbedPane.addTab("Job Selection", null, pnlJob, "Add and configure machine jobs"); tabbedPane.setEnabledAt(1, true); pnlJob.setLayout(null); JPanel pnlMaterials = new JPanel(); pnlMaterials.setBounds(280, 72, 227, 124); pnlMaterials.setBorder(new TitledBorder(UIManager.getBorder("TitledBorder.border"), "Material Settings", TitledBorder.LEADING, TitledBorder.TOP, null, null)); pnlJob.add(pnlMaterials); pnlMaterials.setLayout(null); Material[] materials = { new Material("Custom", 1.0, 20), new Material("Aluminium", 2.7, 40), new Material("Board", 1.3, 80), new Material("Cellophane", 1.5, 20), new Material("HDPE/BOPE", 0.94, 20), new Material("Laminate", 1.0, 20), new Material("LDPE/BOPE", 0.91, 20), new Material("LLDPE", 0.9, 20), new Material("MDPE", 0.925, 20), new Material("Nylon", 1.12, 20), new Material("Polypropylene", 0.91, 20), new Material("Polystyrene", 1.04, 20), new Material("Paper", 0.8, 100), new Material("PEEK", 1.3, 20), new Material("Polyester", 1.4, 20), new Material("PLA", 1.24, 20), new Material("Polyolefin", 0.92, 20), new Material("PSA Label", 1.1, 20), new Material("PVC", 1.36, 20), new Material("Shrink label", 0.91, 20), new Material("Tri. Lam.", 1.1, 20) }; cmbMaterials = new JComboBox(materials); cmbMaterials.setMaximumRowCount(20); cmbMaterials.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { if (jobFormReady) { Material m = (Material) cmbMaterials.getSelectedItem(); if (!(m.name.equals("Custom"))) { jobFormReady = false; txtThickness.setText(Double.toString(roundTwoDecimals(m.getThickness()))); if (lblGsm.getText().equals("(gsm)")) txtDensity.setText(Double.toString(roundTwoDecimals(m.getDensity()))); else txtDensity .setText(Double.toString(roundTwoDecimals(m.getDensity() * m.getThickness()))); if (!metric) { txtThickness .setText(Double.toString(roundTwoDecimals(Core.MicroToMil(m.getThickness())))); } jobFormReady = true; } UpdateJob(); } } }); cmbMaterials.setEnabled(false); cmbMaterials.setSelectedIndex(0); cmbMaterials.setToolTipText("Choose a preset material"); cmbMaterials.setBounds(81, 26, 117, 22); pnlMaterials.add(cmbMaterials); lblPresets = new JLabel("Presets:"); lblPresets.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblPresets.setToolTipText("Choose a preset material"); lblPresets.setEnabled(false); lblPresets.setBounds(37, 29, 40, 15); pnlMaterials.add(lblPresets); lblThickness_1 = new JLabel("Thickness:"); lblThickness_1.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblThickness_1.setToolTipText("Material thickness"); lblThickness_1.setEnabled(false); lblThickness_1.setHorizontalAlignment(SwingConstants.RIGHT); lblThickness_1.setBounds(7, 61, 70, 14); pnlMaterials.add(lblThickness_1); lblDensity_1 = new JLabel("Density:"); lblDensity_1.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblDensity_1.setToolTipText("Material density (per volume, not area)"); lblDensity_1.setEnabled(false); lblDensity_1.setHorizontalAlignment(SwingConstants.RIGHT); lblDensity_1.setBounds(31, 86, 46, 14); pnlMaterials.add(lblDensity_1); txtThickness = new JTextField(); txtThickness.addFocusListener(new FocusAdapter() { @Override public void focusGained(FocusEvent e) { txtThickness.selectAll(); } }); txtThickness.setEnabled(false); txtThickness.getDocument().addDocumentListener(new JobInputChangeListener()); txtThickness.setToolTipText("Material thickness"); txtThickness.setText("20"); txtThickness.setBounds(81, 58, 86, 20); pnlMaterials.add(txtThickness); txtThickness.setColumns(10); txtDensity = new JTextField(); txtDensity.addFocusListener(new FocusAdapter() { @Override public void focusGained(FocusEvent e) { txtDensity.selectAll(); } }); txtDensity.setEnabled(false); txtDensity.getDocument().addDocumentListener(new JobInputChangeListener()); txtDensity.setToolTipText("Material density (per volume, not area)"); txtDensity.setText("0.92"); txtDensity.setBounds(81, 83, 86, 20); pnlMaterials.add(txtDensity); txtDensity.setColumns(10); lblmicro0 = new JLabel("(\u00B5m)"); lblmicro0.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblmicro0.setEnabled(false); lblmicro0.setBounds(177, 61, 46, 14); pnlMaterials.add(lblmicro0); lblgm3 = new JLabel("(g/cm )"); lblgm3.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblgm3.setEnabled(false); lblgm3.setBounds(177, 86, 46, 14); pnlMaterials.add(lblgm3); label_3 = new JLabel("3"); label_3.setEnabled(false); label_3.setFont(new Font("Tahoma", Font.PLAIN, 8)); label_3.setBounds(204, 83, 14, 14); pnlMaterials.add(label_3); JPanel pnlJobs = new JPanel(); pnlJobs.setBounds(20, 168, 250, 283); pnlJobs.setBorder(new TitledBorder(UIManager.getBorder("TitledBorder.border"), "Rewind Settings", TitledBorder.LEADING, TitledBorder.TOP, null, new Color(0, 0, 0))); pnlJob.add(pnlJobs); pnlJobs.setLayout(null); lblTargetRewindLength = new JLabel("Rewind Output:"); lblTargetRewindLength.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblTargetRewindLength.setToolTipText("Quantity of rewind output"); lblTargetRewindLength.setEnabled(false); lblTargetRewindLength.setHorizontalAlignment(SwingConstants.RIGHT); lblTargetRewindLength.setBounds(17, 197, 88, 14); pnlJobs.add(lblTargetRewindLength); lblSlitWidth = new JLabel("Slit Width:"); lblSlitWidth.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblSlitWidth.setToolTipText("Width of each output reel"); lblSlitWidth.setEnabled(false); lblSlitWidth.setHorizontalAlignment(SwingConstants.RIGHT); lblSlitWidth.setBounds(46, 60, 59, 14); pnlJobs.add(lblSlitWidth); lblSlitCount = new JLabel("Reel Count:"); lblSlitCount.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblSlitCount.setToolTipText("Number of reels per set at the output"); lblSlitCount.setEnabled(false); lblSlitCount.setHorizontalAlignment(SwingConstants.RIGHT); lblSlitCount.setBounds(46, 33, 59, 14); pnlJobs.add(lblSlitCount); lblTrimtotal = new JLabel("Trim (total):"); lblTrimtotal.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblTrimtotal.setToolTipText("The trim resulting from the given slit widths"); lblTrimtotal.setEnabled(false); lblTrimtotal.setHorizontalAlignment(SwingConstants.RIGHT); lblTrimtotal.setBounds(20, 114, 85, 14); pnlJobs.add(lblTrimtotal); txtSlits = new JTextField(); txtSlits.setToolTipText("Number of reels per set at the output"); txtSlits.addFocusListener(new FocusAdapter() { @Override public void focusGained(FocusEvent e) { txtSlits.selectAll(); } }); txtSlits.getDocument().addDocumentListener(new JobInputChangeListener()); txtSlits.setEnabled(false); txtSlits.setText("1"); txtSlits.setBounds(109, 30, 86, 20); pnlJobs.add(txtSlits); txtSlits.setColumns(10); txtSlitWidth = new JTextField(); txtSlitWidth.setToolTipText("Width of each output reel"); txtSlitWidth.addFocusListener(new FocusAdapter() { @Override public void focusGained(FocusEvent e) { txtSlitWidth.selectAll(); } }); txtSlitWidth.getDocument().addDocumentListener(new JobInputChangeListener()); txtSlitWidth.setEnabled(false); txtSlitWidth.setText("1350"); txtSlitWidth.setBounds(109, 58, 86, 20); pnlJobs.add(txtSlitWidth); txtSlitWidth.setColumns(10); txtRewindAmount = new JTextField(); txtRewindAmount.setToolTipText("Quantity of rewind output"); txtRewindAmount.addFocusListener(new FocusAdapter() { @Override public void focusGained(FocusEvent e) { txtRewindAmount.selectAll(); } }); txtRewindAmount.getDocument().addDocumentListener(new JobInputChangeListener()); txtRewindAmount.setEnabled(false); txtRewindAmount.setName("RewindLength"); txtRewindAmount.setText("1000"); txtRewindAmount.setBounds(109, 194, 86, 20); pnlJobs.add(txtRewindAmount); txtRewindAmount.setColumns(10); lblTrim = new JLabel("0 mm"); lblTrim.setToolTipText("The trim resulting from the given slit widths"); lblTrim.setEnabled(false); lblTrim.setBounds(111, 114, 65, 14); pnlJobs.add(lblTrim); cmbRewindCore = new JComboBox(); cmbRewindCore.setToolTipText("Core diameter of rewind reels"); ((JTextField) cmbRewindCore.getEditor().getEditorComponent()).getDocument() .addDocumentListener(new DocumentListener() { @Override public void removeUpdate(DocumentEvent arg0) { UpdateJob(); } @Override public void insertUpdate(DocumentEvent arg0) { UpdateJob(); } @Override public void changedUpdate(DocumentEvent arg0) { } }); /*cmbRewindCore.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { UpdateJob(jobIndex); } });*/ cmbRewindCore.setEnabled(false); cmbRewindCore.setModel(new DefaultComboBoxModel(Consts.REWIND_CORE_MM)); cmbRewindCore.setSelectedIndex(1); cmbRewindCore.setBounds(109, 137, 87, 20); pnlJobs.add(cmbRewindCore); cmbRewindCore.setEditable(true); lblRewindCoremm = new JLabel("Rewind Core:"); lblRewindCoremm.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblRewindCoremm.setToolTipText("Core diameter of rewind reels"); lblRewindCoremm.setEnabled(false); lblRewindCoremm.setBounds(40, 140, 65, 14); pnlJobs.add(lblRewindCoremm); lblPer_1 = new JLabel("per:"); lblPer_1.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblPer_1.setToolTipText("Set whether rewind output is measured per reel or per set"); lblPer_1.setEnabled(false); lblPer_1.setBounds(85, 248, 20, 14); pnlJobs.add(lblPer_1); cmbJobDomain = new JComboBox(); cmbJobDomain.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { UpdateSetReel(); //UpdateJob(); } }); cmbJobDomain.setEnabled(false); cmbJobDomain.setToolTipText("Set whether rewind output is measured per reel or per set"); cmbJobDomain.setModel(new DefaultComboBoxModel(new String[] { "Reel", "Set" })); cmbJobDomain.setBounds(109, 246, 95, 20); pnlJobs.add(cmbJobDomain); lblmm3 = new JLabel("(mm)"); lblmm3.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblmm3.setEnabled(false); lblmm3.setBounds(205, 61, 27, 14); pnlJobs.add(lblmm3); lblmm2 = new JLabel("(mm)"); lblmm2.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblmm2.setEnabled(false); lblmm2.setBounds(206, 140, 27, 14); pnlJobs.add(lblmm2); pnlUnwinds = new JPanel(); pnlUnwinds.setLayout(null); pnlUnwinds.setBorder(new TitledBorder(UIManager.getBorder("TitledBorder.border"), "Unwind Settings", TitledBorder.LEADING, TitledBorder.TOP, null, null)); pnlUnwinds.setBounds(280, 207, 227, 162); pnlJob.add(pnlUnwinds); lblUnwindLength = new JLabel("Unwind Size:"); lblUnwindLength.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblUnwindLength.setToolTipText("Quantity of material per mother roll"); lblUnwindLength.setEnabled(false); lblUnwindLength.setHorizontalAlignment(SwingConstants.RIGHT); lblUnwindLength.setBounds(21, 104, 66, 14); pnlUnwinds.add(lblUnwindLength); txtUnwindAmount = new JTextField(); txtUnwindAmount.setToolTipText("Quantity of material per mother roll"); txtUnwindAmount.addFocusListener(new FocusAdapter() { @Override public void focusGained(FocusEvent arg0) { txtUnwindAmount.selectAll(); } }); txtUnwindAmount.getDocument().addDocumentListener(new JobInputChangeListener()); txtUnwindAmount.setEnabled(false); txtUnwindAmount.setName("UnwindLength"); txtUnwindAmount.setText("10000"); txtUnwindAmount.setBounds(92, 100, 86, 20); pnlUnwinds.add(txtUnwindAmount); txtUnwindAmount.setColumns(10); lblWebWidthmm = new JLabel("Web Width:"); lblWebWidthmm.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblWebWidthmm.setToolTipText("Width of mother rolls"); lblWebWidthmm.setEnabled(false); lblWebWidthmm.setBounds(31, 29, 57, 14); pnlUnwinds.add(lblWebWidthmm); lblUnwindCoremm = new JLabel("Unwind Core:"); lblUnwindCoremm.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblUnwindCoremm.setToolTipText("Core diameter of mother rolls"); lblUnwindCoremm.setEnabled(false); lblUnwindCoremm.setBounds(22, 54, 66, 14); pnlUnwinds.add(lblUnwindCoremm); cmbUnwindCore = new JComboBox(); cmbUnwindCore.setToolTipText("Core diameter of mother rolls"); ((JTextField) cmbUnwindCore.getEditor().getEditorComponent()).getDocument() .addDocumentListener(new DocumentListener() { @Override public void removeUpdate(DocumentEvent arg0) { UpdateJob(); } @Override public void insertUpdate(DocumentEvent arg0) { UpdateJob(); } @Override public void changedUpdate(DocumentEvent arg0) { } }); cmbUnwindCore.setEnabled(false); cmbUnwindCore.setModel(new DefaultComboBoxModel(new String[] { "76", "152", "254" })); cmbUnwindCore.setBounds(92, 51, 86, 20); pnlUnwinds.add(cmbUnwindCore); cmbUnwindCore.setEditable(true); lblmm0 = new JLabel("(mm)"); lblmm0.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblmm0.setEnabled(false); lblmm0.setBounds(189, 29, 32, 14); pnlUnwinds.add(lblmm0); lblmm1 = new JLabel("(mm)"); lblmm1.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblmm1.setEnabled(false); lblmm1.setBounds(189, 53, 32, 14); pnlUnwinds.add(lblmm1); pnlEnviron = new JPanel(); tabbedPane.addTab("Job Scheduling", null, pnlEnviron, "Edit the schedule of jobs to be analysed"); tabbedPane.setEnabledAt(2, true); pnlEnviron.setLayout(null); JPanel pnlShifts = new JPanel(); pnlShifts.setLayout(null); pnlShifts.setBorder(new TitledBorder(UIManager.getBorder("TitledBorder.border"), "Shift Options", TitledBorder.LEADING, TitledBorder.TOP, null, null)); pnlShifts.setBounds(20, 72, 287, 162); pnlEnviron.add(pnlShifts); JLabel lblShiftLength = new JLabel("Shift Length:"); lblShiftLength.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblShiftLength.setToolTipText("Hours per working shift"); lblShiftLength.setHorizontalAlignment(SwingConstants.RIGHT); lblShiftLength.setBounds(15, 28, 108, 14); pnlShifts.add(lblShiftLength); JLabel lblDayLength = new JLabel("Day Length:"); lblDayLength.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblDayLength.setToolTipText("Working hours per day"); lblDayLength.setHorizontalAlignment(SwingConstants.RIGHT); lblDayLength.setBounds(29, 78, 94, 14); pnlShifts.add(lblDayLength); JLabel lblShiftsDay = new JLabel("Shifts per Day:"); lblShiftsDay.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblShiftsDay.setToolTipText("Shifts per day"); lblShiftsDay.setHorizontalAlignment(SwingConstants.RIGHT); lblShiftsDay.setBounds(15, 53, 108, 14); pnlShifts.add(lblShiftsDay); JLabel lblDays = new JLabel("Days per Year:"); lblDays.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblDays.setToolTipText("Days per year"); lblDays.setHorizontalAlignment(SwingConstants.RIGHT); lblDays.setBounds(0, 106, 123, 14); pnlShifts.add(lblDays); txtShiftLength = new JTextField(); txtShiftLength.getDocument().addDocumentListener(new DocumentListener() { @Override public void removeUpdate(DocumentEvent arg0) { UpdateShifts(); } @Override public void insertUpdate(DocumentEvent arg0) { UpdateShifts(); } @Override public void changedUpdate(DocumentEvent arg0) { } }); txtShiftLength.addFocusListener(new FocusAdapter() { @Override public void focusGained(FocusEvent arg0) { txtShiftLength.selectAll(); } }); txtShiftLength.setToolTipText("Hours per working shift"); txtShiftLength.setText("8"); txtShiftLength.setBounds(133, 25, 86, 20); pnlShifts.add(txtShiftLength); txtShiftLength.setColumns(10); txtShiftCount = new JTextField(); txtShiftCount.getDocument().addDocumentListener(new DocumentListener() { @Override public void removeUpdate(DocumentEvent arg0) { UpdateShifts(); } @Override public void insertUpdate(DocumentEvent arg0) { UpdateShifts(); } @Override public void changedUpdate(DocumentEvent arg0) { } }); txtShiftCount.addFocusListener(new FocusAdapter() { @Override public void focusGained(FocusEvent e) { txtShiftCount.selectAll(); } }); txtShiftCount.setToolTipText("Shifts per day"); txtShiftCount.setText("3"); txtShiftCount.setBounds(133, 50, 86, 20); pnlShifts.add(txtShiftCount); txtShiftCount.setColumns(10); txtDaysYear = new JTextField(); txtDaysYear.getDocument().addDocumentListener(new DocumentListener() { @Override public void removeUpdate(DocumentEvent arg0) { UpdateShifts(); } @Override public void insertUpdate(DocumentEvent arg0) { UpdateShifts(); } @Override public void changedUpdate(DocumentEvent arg0) { } }); txtDaysYear.addFocusListener(new FocusAdapter() { @Override public void focusGained(FocusEvent e) { txtDaysYear.selectAll(); } }); txtDaysYear.setToolTipText("Days per year"); txtDaysYear.setText("250"); txtDaysYear.setBounds(133, 103, 86, 20); pnlShifts.add(txtDaysYear); txtDaysYear.setColumns(10); lblDayLength2 = new JLabel("24 hours"); lblDayLength2.setToolTipText("Working hours per day"); lblDayLength2.setBounds(133, 78, 86, 14); pnlShifts.add(lblDayLength2); lblHoursYear = new JLabel("Hours per Year:"); lblHoursYear.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblHoursYear.setToolTipText("Working hours per year"); lblHoursYear.setBounds(47, 131, 76, 14); pnlShifts.add(lblHoursYear); lblHoursYear2 = new JLabel("6000 hours"); lblHoursYear2.setToolTipText("Working hours per year"); lblHoursYear2.setBounds(133, 131, 86, 14); pnlShifts.add(lblHoursYear2); lblHrs = new JLabel("hrs"); lblHrs.setBounds(229, 28, 46, 14); pnlShifts.add(lblHrs); btnAddAll = new JButton("Add All"); btnAddAll.setToolTipText("Add all jobs to the schedule in order"); btnAddAll.setFont(new Font("Tahoma", Font.BOLD, 11)); btnAddAll.setEnabled(false); try { btnAddAll.setIcon(new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/plus.png")))); } catch (IOException e1) { e1.printStackTrace(); } btnAddAll.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { for (int i = 0; i < jobModel.getSize(); ++i) { listJobsAvail.setSelectedIndex(i); btnAddJob.doClick(); } } }); btnAddAll.setBounds(327, 460, 110, 36); pnlEnviron.add(btnAddAll); btnAddJob = new JButton(""); btnAddJob.setToolTipText("Add this job to the schedule"); btnAddJob.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { //AddToSchedule(listJobsAvail.getSelectedValue()); ResetStatusLabel(); int index = listSchedule.getSelectedIndex(); //int source_index = listJobsAvail.getSelectedIndex(); Job sel = (Job) listJobsAvail.getSelectedValue(); JobItem j = environment.getSchedule().new JobItem(sel, 0, sel.getTotWeight(), sel.getTotLength()); int size = scheduleModel.getSize(); // no limit now there are scroll bars /* if(size >= Consts.JOB_LIST_LIMIT){ // Max list size ShowMessage("Maximum number of jobs scheduled. Please delete before attempting to add more."); return; }*/ //If no selection or if item in last position is selected, //add the new one to end of list, and select new one. if (index == -1 || (index + 1 == size)) { scheduleModel.addElement(sel); listSchedule.setSelectedIndex(size); environment.getSchedule().addJob(j); //Otherwise insert the new one after the current selection, //and select new one. } else { scheduleModel.insertElementAt(sel, index + 1); listSchedule.setSelectedIndex(index + 1); environment.getSchedule().insertJob(j, index + 1); } btnClearSchedule.setEnabled(true); } }); btnAddJob.setEnabled(false); try { btnAddJob.setIcon(new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/add_job.png")))); btnAddJob.setDisabledIcon( new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/add_job_dis.png")))); btnAddJob.setRolloverEnabled(true); btnAddJob.setRolloverIcon( new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/add_job_over.png")))); } catch (NullPointerException e111) { System.out.println("Image load error"); } catch (IOException e1) { e1.printStackTrace(); } btnAddJob.setBounds(521, 178, 54, 54); pnlEnviron.add(btnAddJob); btnRemoveJob = new JButton(""); btnRemoveJob.setToolTipText("Remove job from schedule"); btnRemoveJob.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { ResetStatusLabel(); // Uncomment this code to allow jobs to be saved back after removal from schedule /*if(listSchedule.getSelectedIndex() > -1){ Job j = (Job) listSchedule.getSelectedValue(); String name = j.getName().toLowerCase(); if(!jobNames.contains(name) && !jobModel.contains(j)){ if(jobModel.size() < Consts.JOB_LIST_LIMIT){ jobNames.add(name); jobFormReady = true; int index = -1; if(listJobsAvail.getSelectedIndex() > -1) index = listJobsAvail.getSelectedIndex(); if(index < 0){ jobModel.addElement(j); listJobsAvail.setSelectedIndex(jobModel.size()-1); listJobs.setSelectedIndex(jobModel.size()-1); }else{ jobModel.insertElementAt(j, index+1); listJobsAvail.setSelectedIndex(index+1); listJobs.setSelectedIndex(index+1); } } } }*/ ListSelectionModel lsm = listSchedule.getSelectionModel(); int firstSelected = lsm.getMinSelectionIndex(); int lastSelected = lsm.getMaxSelectionIndex(); scheduleModel.removeRange(firstSelected, lastSelected); environment.getSchedule().remove(firstSelected); int size = scheduleModel.size(); if (size == 0) { //List is empty: disable delete, up, and down buttons. btnClearSchedule.setEnabled(false); btnUpSchedule.setEnabled(false); btnDownSchedule.setEnabled(false); listSchedule.clearSelection(); btnRemoveJob.setEnabled(false); btnViewSchedule.setEnabled(false); } else { //Adjust the selection. if (firstSelected == scheduleModel.getSize()) { //Removed item in last position. firstSelected--; } listSchedule.setSelectedIndex(firstSelected); if (size == 21) { // No longer full list ResetStatusLabel(); } } } }); btnRemoveJob.setEnabled(false); try { btnRemoveJob .setIcon(new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/del_job.png")))); btnRemoveJob.setDisabledIcon( new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/del_job_dis.png")))); btnRemoveJob.setRolloverEnabled(true); btnRemoveJob.setRolloverIcon( new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/del_job_over.png")))); } catch (NullPointerException e111) { System.out.println("Image load error"); } catch (IOException e1) { e1.printStackTrace(); } btnRemoveJob.setBounds(520, 243, 54, 54); pnlEnviron.add(btnRemoveJob); lblJobSchedule_1 = new JLabel("Job Schedule"); lblJobSchedule_1.setFont(new Font("Tahoma", Font.BOLD, 18)); lblJobSchedule_1.setBounds(29, 18, 269, 22); pnlEnviron.add(lblJobSchedule_1); lblScheduleJobsTo = new JLabel("Schedule jobs to the right, then set shift options below"); lblScheduleJobsTo.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblScheduleJobsTo.setBounds(29, 45, 279, 14); pnlEnviron.add(lblScheduleJobsTo); lblAvailableJobs_1 = new JLabel("Available Jobs"); lblAvailableJobs_1.setFont(new Font("Tahoma", Font.BOLD, 12)); lblAvailableJobs_1.setBounds(327, 19, 137, 14); pnlEnviron.add(lblAvailableJobs_1); lblJobSchedule_2 = new JLabel("Job Schedule"); lblJobSchedule_2.setFont(new Font("Tahoma", Font.BOLD, 12)); lblJobSchedule_2.setBounds(577, 19, 110, 14); pnlEnviron.add(lblJobSchedule_2); panel = new JPanel(); panel.setLayout(null); panel.setBorder(new TitledBorder(UIManager.getBorder("TitledBorder.border"), "Schedule Options", TitledBorder.LEADING, TitledBorder.TOP, null, null)); panel.setBounds(20, 245, 287, 104); pnlEnviron.add(panel); btnViewSchedule = new JButton("View Schedule Diagram"); btnViewSchedule.setFont(new Font("Tahoma", Font.PLAIN, 11)); btnViewSchedule.setToolTipText("View chart of schedule timings"); btnViewSchedule.setEnabled(false); btnViewSchedule.setBounds(33, 27, 170, 29); panel.add(btnViewSchedule); chckbxSimulateScheduleStart = new JCheckBox("Ignore machine config & knife positioning times"); chckbxSimulateScheduleStart.setFont(new Font("Tahoma", Font.PLAIN, 11)); chckbxSimulateScheduleStart.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (!initialising) environment.StartStopTimes = !chckbxSimulateScheduleStart.isSelected(); } }); chckbxSimulateScheduleStart.setToolTipText( "WARNING: Use ONLY when you wish to model the output of a single job over a long time period \u2013 such that the initial set-up time has no material impact on the production volume"); chckbxSimulateScheduleStart.setBounds(30, 62, 251, 18); panel.add(chckbxSimulateScheduleStart); lblhoverForInfo = new JLabel("(hover for info)"); lblhoverForInfo.setToolTipText( "WARNING: Use ONLY when you wish to model the output of a single job over a long time period \u2013 such that the initial set-up time has no material impact on the production volume"); lblhoverForInfo.setForeground(Color.GRAY); lblhoverForInfo.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblhoverForInfo.setBounds(34, 80, 147, 14); panel.add(lblhoverForInfo); btnUpSchedule = new JButton(""); btnUpSchedule.setToolTipText("Move job earlier in schedule"); btnUpSchedule.addActionListener(new ScheduleUpListener()); try { btnUpSchedule.setIcon(new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/up.png")))); btnUpSchedule.setRolloverEnabled(true); btnUpSchedule.setRolloverIcon( new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/up_over.png")))); btnUpSchedule.setDisabledIcon( new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/up_dis.png")))); } catch (NullPointerException e11) { System.out.println("Image load error"); } catch (IOException e1) { e1.printStackTrace(); } btnUpSchedule.setEnabled(false); btnUpSchedule.setBounds(700, 463, 30, 30); pnlEnviron.add(btnUpSchedule); btnDownSchedule = new JButton(""); btnDownSchedule.setToolTipText("Move job later in schedule"); btnDownSchedule.addActionListener(new ScheduleDownListener()); try { btnDownSchedule .setIcon(new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/down.png")))); btnDownSchedule.setRolloverEnabled(true); btnDownSchedule.setRolloverIcon( new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/down_over.png")))); btnDownSchedule.setDisabledIcon( new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/down_dis.png")))); } catch (NullPointerException e11) { System.out.println("Image load error"); } catch (IOException e1) { e1.printStackTrace(); } btnDownSchedule.setEnabled(false); btnDownSchedule.setBounds(737, 463, 30, 30); pnlEnviron.add(btnDownSchedule); btnClearSchedule = new JButton("Clear"); btnClearSchedule.setToolTipText("Clear all jobs from the schedule"); btnClearSchedule.setFont(new Font("Tahoma", Font.BOLD, 11)); btnClearSchedule.setEnabled(false); try { btnClearSchedule .setIcon(new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/delete.png")))); btnClearSchedule.setRolloverEnabled(true); btnClearSchedule.setRolloverIcon( new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/delete_over.png")))); btnClearSchedule.setDisabledIcon( new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/delete_dis.png")))); } catch (NullPointerException e11) { System.out.println("Image load error"); } catch (IOException e1) { e1.printStackTrace(); } btnClearSchedule.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { scheduleModel.removeAllElements(); environment.getSchedule().empty(); } }); btnClearSchedule.setBounds(577, 460, 110, 36); pnlEnviron.add(btnClearSchedule); //listSchedule.setBorder(new SoftBevelBorder(BevelBorder.LOWERED, null, null, null, null)); //listSchedule.setBounds(577, 44, 190, 405); //pnlEnviron.add(listSchedule); btnViewSchedule.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { ScheduleChart ch = new ScheduleChart(environment.getSchedule()); ch.pack(); try { ch.setIconImage(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/logo.png"))); } catch (NullPointerException e11) { System.out.println("Image load error"); } catch (IOException e) { e.printStackTrace(); } ch.setLocationRelativeTo(frmTitanRoiCalculator); ch.setVisible(true); } }); scrlSchedule = new JScrollPane(); scrlSchedule.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER); scrlSchedule.setBorder(new SoftBevelBorder(BevelBorder.LOWERED, Color.LIGHT_GRAY, null, null, null)); scrlSchedule.setBounds(577, 44, 190, 405); scrlSchedule.getVerticalScrollBar().setUnitIncrement(16); pnlEnviron.add(scrlSchedule); panel_8 = new JPanel(); panel_8.setToolTipText("Select job to re-order or remove from schedule"); panel_8.setBackground(Color.WHITE); panel_8.setBorder(null); scrlSchedule.setViewportView(panel_8); panel_8.setLayout(new BorderLayout(0, 0)); listSchedule = new JList(scheduleModel); panel_8.add(listSchedule, BorderLayout.NORTH); listSchedule.setToolTipText("Select job to re-order or remove from schedule"); listSchedule.addListSelectionListener(new ScheduleSelectionListener()); listSchedule.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); listSchedule.setCellRenderer(new JobListRenderer()); panel_5 = new JPanel(); panel_5.setLayout(null); panel_5.setBorder(new TitledBorder(UIManager.getBorder("TitledBorder.border"), "Notes", TitledBorder.LEADING, TitledBorder.TOP, null, null)); panel_5.setBounds(20, 360, 287, 136); pnlEnviron.add(panel_5); lblToViewAnalysis = new JLabel("To view analysis for 1 job only, add just that job"); lblToViewAnalysis.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblToViewAnalysis.setBounds(24, 24, 241, 14); panel_5.add(lblToViewAnalysis); lblToTheSchedule = new JLabel("to the schedule."); lblToTheSchedule.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblToTheSchedule.setBounds(24, 38, 241, 14); panel_5.add(lblToTheSchedule); lblToModelMaintenance = new JLabel("To model maintenance or other downtime, edit the"); lblToModelMaintenance.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblToModelMaintenance.setBounds(24, 59, 253, 14); panel_5.add(lblToModelMaintenance); lblShiftOptionsAbove = new JLabel("shift options above. This will affect annual output,"); lblShiftOptionsAbove.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblShiftOptionsAbove.setBounds(24, 73, 253, 14); panel_5.add(lblShiftOptionsAbove); lblButNotThe = new JLabel("but not the rates or efficiencies. For these, use the"); lblButNotThe.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblButNotThe.setBounds(24, 87, 253, 14); panel_5.add(lblButNotThe); lbladvancedTabIn = new JLabel("'advanced' tab in the options menu box."); lbladvancedTabIn.setFont(new Font("Tahoma", Font.PLAIN, 11)); lbladvancedTabIn.setBounds(24, 101, 253, 14); panel_5.add(lbladvancedTabIn); scrollPane_2 = new JScrollPane(); scrollPane_2.setBorder(null); scrollPane_2.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER); scrollPane_2.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER); scrollPane_2.setBounds(327, 44, 190, 405); pnlEnviron.add(scrollPane_2); panel_9 = new JPanel(); panel_9.setToolTipText("Select job to be added"); scrollPane_2.setViewportView(panel_9); panel_9.setBorder(new SoftBevelBorder(BevelBorder.LOWERED, Color.LIGHT_GRAY, null, null, null)); panel_9.setBackground(Color.WHITE); panel_9.setLayout(new BorderLayout(0, 0)); listJobsAvail = new JList(jobModel); panel_9.add(listJobsAvail, BorderLayout.NORTH); listJobsAvail.getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0), "add"); listJobsAvail.getActionMap().put("add", new AddScheduleBtn()); listJobsAvail.setToolTipText("Select job to be added"); listJobsAvail.addListSelectionListener(new JobAvailSelectionListener()); listJobsAvail.setCellRenderer(new JobListRenderer()); listJobsAvail.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); listJobsAvail.setBorder(null); pnlCompare = new JPanel(); tabbedPane.addTab("Productivity Comparison", null, pnlCompare, "Productivity comparison data & graphs"); tabbedPane.setEnabledAt(3, true); pnlCompare.setLayout(null); pnlResults = new JPanel(); pnlResults.setBorder( new TitledBorder(null, "Numerical Results", TitledBorder.LEADING, TitledBorder.TOP, null, null)); pnlResults.setBounds(20, 72, 479, 134); pnlCompare.add(pnlResults); pnlResults.setLayout(null); lblOutputLength = new JLabel("Output length over time period:"); lblOutputLength.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblOutputLength.setEnabled(false); lblOutputLength.setToolTipText("Quantity produced"); lblOutputLength.setBounds(220, 54, 152, 14); pnlResults.add(lblOutputLength); lblOutputWeight = new JLabel("Output weight over time period:"); lblOutputWeight.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblOutputWeight.setEnabled(false); lblOutputWeight.setToolTipText("Quantity produced"); lblOutputWeight.setBounds(220, 79, 162, 14); pnlResults.add(lblOutputWeight); cmbTimeRef = new JComboBox(); cmbTimeRef.setEnabled(false); cmbTimeRef.setToolTipText("Select a time range to display results over"); cmbTimeRef.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { // Refresh analyses UpdateNumericalAnalysis(); } }); cmbTimeRef.setModel( new DefaultComboBoxModel(new String[] { "Schedule", "Year", "Hour", "Shift", "Day"/*, "Week"*/ })); cmbTimeRef.setBounds(247, 98, 125, 24); pnlResults.add(cmbTimeRef); lblPer = new JLabel("Per:"); lblPer.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblPer.setEnabled(false); lblPer.setBounds(220, 103, 20, 14); pnlResults.add(lblPer); lblAverageMmin = new JLabel("Average rate:"); lblAverageMmin.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblAverageMmin.setEnabled(false); lblAverageMmin.setToolTipText("Average quantity processed"); lblAverageMmin.setBounds(20, 54, 95, 14); pnlResults.add(lblAverageMmin); lblNumericsWeight = new JLabel("0.0 tons"); lblNumericsWeight.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblNumericsWeight.setEnabled(false); lblNumericsWeight.setToolTipText("Quantity produced"); lblNumericsWeight.setBounds(380, 79, 89, 14); pnlResults.add(lblNumericsWeight); lblNumericsLength = new JLabel("0.0 metres"); lblNumericsLength.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblNumericsLength.setEnabled(false); lblNumericsLength.setToolTipText("Quantity produced"); lblNumericsLength.setBounds(380, 54, 89, 14); pnlResults.add(lblNumericsLength); lblNumericsRate = new JLabel("0.0 m/hr"); lblNumericsRate.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblNumericsRate.setEnabled(false); lblNumericsRate.setToolTipText("Average quantity processed"); lblNumericsRate.setBounds(128, 54, 82, 14); pnlResults.add(lblNumericsRate); lblEfficiency = new JLabel("Machine running:"); lblEfficiency.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblEfficiency.setEnabled(false); lblEfficiency.setToolTipText("Proportion of total time for which the machine is running"); lblEfficiency.setBounds(20, 104, 95, 14); pnlResults.add(lblEfficiency); cmbMachines = new JComboBox(); cmbMachines.setMaximumRowCount(15); cmbMachines.setFont(new Font("Tahoma", Font.BOLD, 11)); cmbMachines.setEnabled(false); cmbMachines.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { UpdateNumericalAnalysis(); } }); cmbMachines.setToolTipText("Select machine"); cmbMachines.setBounds(128, 20, 244, 24); pnlResults.add(cmbMachines); lblMachine = new JLabel("Select Machine:"); lblMachine.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblMachine.setEnabled(false); lblMachine.setToolTipText("Select machine"); lblMachine.setBounds(20, 25, 77, 14); pnlResults.add(lblMachine); lblNumericsEff = new JLabel("0.0 %"); lblNumericsEff.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblNumericsEff.setEnabled(false); lblNumericsEff.setToolTipText("Machine efficiency"); lblNumericsEff.setBounds(128, 104, 65, 14); pnlResults.add(lblNumericsEff); lblscheduletimelbl = new JLabel("Time to run schedule:"); lblscheduletimelbl.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblscheduletimelbl.setToolTipText("Time to run schedule"); lblscheduletimelbl.setEnabled(false); lblscheduletimelbl.setBounds(20, 79, 103, 14); pnlResults.add(lblscheduletimelbl); lblscheduletime = new JLabel("0.0 hr"); lblscheduletime.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblscheduletime.setToolTipText("Time to run schedule"); lblscheduletime.setEnabled(false); lblscheduletime.setBounds(128, 79, 77, 14); pnlResults.add(lblscheduletime); pnlROI = new JPanel(); tabbedPane.addTab("Return on Investment", (Icon) null, pnlROI, "Return on investment comparison and analysis"); pnlROI.setLayout(null); tabbedPane.setEnabledAt(4, true); lblProductivityComparison = new JLabel("Productivity Comparison"); lblProductivityComparison.setFont(new Font("Tahoma", Font.BOLD, 18)); lblProductivityComparison.setBounds(29, 18, 269, 22); pnlCompare.add(lblProductivityComparison); lblSelectMultipleMachines = new JLabel( "Select multiple machines from the list on the right, then compare them below"); lblSelectMultipleMachines.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblSelectMultipleMachines.setBounds(29, 45, 433, 14); pnlCompare.add(lblSelectMultipleMachines); label_2 = new JLabel("Machines"); label_2.setFont(new Font("Tahoma", Font.BOLD, 12)); label_2.setBounds(522, 19, 85, 14); pnlCompare.add(label_2); pnlProdGraph = new JPanel(); pnlProdGraph.setBounds(20, 222, 479, 274); pnlCompare.add(pnlProdGraph); pnlProdGraph.setBorder(new TitledBorder(UIManager.getBorder("TitledBorder.border"), "Graphical Results", TitledBorder.LEADING, TitledBorder.TOP, null, null)); pnlProdGraph.setLayout(null); btnShowGraph = new JButton("Open Graph"); btnShowGraph.setFont(new Font("Tahoma", Font.BOLD, 11)); btnShowGraph.setToolTipText("Open graph in new window"); btnShowGraph.setEnabled(false); btnShowGraph.setBounds(366, 51, 99, 39); pnlProdGraph.add(btnShowGraph); btnSaveToFile = new JButton("Save to File"); btnSaveToFile.setFont(new Font("Tahoma", Font.PLAIN, 11)); btnSaveToFile.setToolTipText("Save image to disk"); btnSaveToFile.setEnabled(false); btnSaveToFile.addActionListener(SaveActionListener); btnSaveToFile.setBounds(366, 97, 99, 24); pnlProdGraph.add(btnSaveToFile); pnlPreview = new JPanel(); pnlPreview.setBackground(Color.WHITE); pnlPreview.setBorder(new SoftBevelBorder(BevelBorder.LOWERED, Color.LIGHT_GRAY, null, null, null)); pnlPreview.setBounds(21, 51, 335, 205); pnlProdGraph.add(pnlPreview); pnlPreview.setLayout(null); pnlGraph = new ChartPanel(chart); pnlGraph.setBounds(2, 2, 331, 201); //pnlGraph.setPreferredSize(new java.awt.Dimension(243, 171)); pnlPreview.add(pnlGraph); try { picLabel = new JLabel( new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/no_preview.png")))); } catch (IOException e2) { e2.printStackTrace(); } picLabel.setBounds(2, 2, 331, 201); pnlPreview.add(picLabel); pnlGraph.setVisible(false); lblPreview = new JLabel("Graph Preview"); lblPreview.setForeground(Color.DARK_GRAY); lblPreview.setFont(new Font("Tahoma", Font.BOLD, 12)); lblPreview.setEnabled(false); lblPreview.setBounds(21, 24, 99, 16); pnlProdGraph.add(lblPreview); lblType = new JLabel("Graph Type:"); lblType.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblType.setEnabled(false); lblType.setToolTipText("Choose measurement type"); lblType.setBounds(184, 26, 65, 14); pnlProdGraph.add(lblType); btnShowTimings = new JButton("Machine Runs"); btnShowTimings.setFont(new Font("Tahoma", Font.PLAIN, 11)); btnShowTimings.setToolTipText("Show timing diagram for a single machine run"); btnShowTimings.setEnabled(false); btnShowTimings.addActionListener(new BtnShowTimingsActionListener()); btnShowTimings.setBounds(366, 201, 99, 24); pnlProdGraph.add(btnShowTimings); btnDowntime = new JButton("Productivity"); btnDowntime.setFont(new Font("Tahoma", Font.PLAIN, 11)); btnDowntime.setToolTipText("View productivity breakdown charts for the selected machines"); btnDowntime.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { ShowTimingBreakdown(); } }); btnDowntime.setEnabled(false); btnDowntime.setBounds(366, 232, 99, 24); pnlProdGraph.add(btnDowntime); lblbreakdown1 = new JLabel("Show timing"); lblbreakdown1.setEnabled(false); lblbreakdown1.setBounds(370, 166, 99, 14); pnlProdGraph.add(lblbreakdown1); lblbreakdown2 = new JLabel("breakdown for:"); lblbreakdown2.setEnabled(false); lblbreakdown2.setBounds(370, 182, 99, 14); pnlProdGraph.add(lblbreakdown2); panel_3 = new JPanel(); panel_3.setBorder(new TitledBorder(null, "", TitledBorder.LEADING, TitledBorder.TOP, null, null)); panel_3.setBounds(522, 459, 245, 37); pnlCompare.add(panel_3); panel_3.setLayout(null); btnNone = new JButton("None"); btnNone.setFont(new Font("Tahoma", Font.PLAIN, 11)); btnNone.setEnabled(false); btnNone.setBounds(172, 7, 57, 23); panel_3.add(btnNone); btnNone.setToolTipText("Clear machine selection"); btnAll = new JButton("All"); btnAll.setFont(new Font("Tahoma", Font.PLAIN, 11)); btnAll.setEnabled(false); btnAll.setBounds(105, 7, 57, 23); panel_3.add(btnAll); btnAll.setToolTipText("Select all machines"); lblSelect = new JLabel("Select:"); lblSelect.setEnabled(false); lblSelect.setBounds(37, 11, 46, 14); panel_3.add(lblSelect); scrollPane_3 = new JScrollPane(); scrollPane_3.setBorder(null); scrollPane_3.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER); scrollPane_3.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER); scrollPane_3.setBounds(522, 44, 245, 405); pnlCompare.add(scrollPane_3); panel_10 = new JPanel(); panel_10.setToolTipText( "Click a machine to select it. Select multiple machines to compare their performance under the chosen job schedule."); panel_10.setBackground(Color.WHITE); scrollPane_3.setViewportView(panel_10); panel_10.setBorder(new SoftBevelBorder(BevelBorder.LOWERED, Color.LIGHT_GRAY, null, null, null)); panel_10.setLayout(new BorderLayout(0, 0)); listCompare = new JList(listModel); panel_10.add(listCompare, BorderLayout.NORTH); listCompare.setCellRenderer(new MachineListRenderer()); listCompare.setToolTipText( "Click a machine to select it. Select multiple machines to compare their performance under the chosen job schedule."); listCompare.setBorder(null); listCompare.addListSelectionListener(new MultiSelectionListener()); btnAll.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { int[] count = new int[listModel.size()]; for (int i = 0; i < listModel.size(); ++i) count[i] = i; listCompare.setSelectedIndices(count); } }); btnNone.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { listCompare.clearSelection(); } }); btnShowGraph.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { // TODO base on cmbGraphType: or not if just using chart /*PieChart test = new PieChart("title","this is a pie chart"); test.pack(); test.setVisible(true); test.setLocationRelativeTo(null);*/ JFrame popGraph = new JFrame(); JFreeChart chartBig = null; try { chartBig = (JFreeChart) chart.clone(); } catch (CloneNotSupportedException e) { e.printStackTrace(); } //chartBig.setTitle("Productivity Comparison"); ChartPanel cpanel = new ChartPanel(chartBig); cpanel.setPreferredSize(new java.awt.Dimension(500, 300)); popGraph.setContentPane(cpanel); try { popGraph.setIconImage(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/logo.png"))); } catch (NullPointerException e11) { System.out.println("Image load error"); } catch (IOException e) { e.printStackTrace(); } popGraph.setTitle("Productivity Graph"); popGraph.setSize(450, 300); popGraph.pack(); popGraph.setVisible(true); popGraph.setLocationRelativeTo(frmTitanRoiCalculator); } }); cmbGraphType = new JComboBox(); cmbGraphType.setMaximumRowCount(10); cmbGraphType.setFont(new Font("Tahoma", Font.PLAIN, 11)); cmbGraphType.setEnabled(false); cmbGraphType.setToolTipText("Choose measurement type"); cmbGraphType.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { // Refresh analyses UpdateGraph(); } }); cmbGraphType.setModel(new DefaultComboBoxModel(new String[] { "Schedule Time", "Length per Hour", "Weight per Hour", "Length per Year", "Weight per Year", "Run Percentage" })); cmbGraphType.setSelectedIndex(0); cmbGraphType.setBounds(251, 21, 105, 24); pnlProdGraph.add(cmbGraphType); lblReturnOnInvestment = new JLabel("Return on Investment"); lblReturnOnInvestment.setFont(new Font("Tahoma", Font.BOLD, 18)); lblReturnOnInvestment.setBounds(29, 18, 269, 22); pnlROI.add(lblReturnOnInvestment); lblSelectMultipleMachines_1 = new JLabel( "Select multiple machines from the list on the right, then compare them below"); lblSelectMultipleMachines_1.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblSelectMultipleMachines_1.setBounds(29, 45, 433, 14); pnlROI.add(lblSelectMultipleMachines_1); lblCompareroiList = new JLabel("Machines"); lblCompareroiList.setFont(new Font("Tahoma", Font.BOLD, 12)); lblCompareroiList.setBounds(522, 19, 85, 14); pnlROI.add(lblCompareroiList); panel_4 = new JPanel(); panel_4.setLayout(null); panel_4.setBorder(new TitledBorder(null, "", TitledBorder.LEADING, TitledBorder.TOP, null, null)); panel_4.setBounds(522, 459, 245, 37); pnlROI.add(panel_4); btnROIselectnone = new JButton("None"); btnROIselectnone.setFont(new Font("Tahoma", Font.PLAIN, 11)); btnROIselectnone.setEnabled(false); btnROIselectnone.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { listCompareRoi.clearSelection(); } }); btnROIselectnone.setToolTipText("Clear machine selection"); btnROIselectnone.setBounds(172, 7, 57, 23); panel_4.add(btnROIselectnone); btnROIselectall = new JButton("All"); btnROIselectall.setFont(new Font("Tahoma", Font.PLAIN, 11)); btnROIselectall.setEnabled(false); btnROIselectall.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { int[] count = new int[listModel.size()]; for (int i = 0; i < listModel.size(); ++i) count[i] = i; listCompareRoi.setSelectedIndices(count); } }); btnROIselectall.setToolTipText("Select all machines"); btnROIselectall.setBounds(105, 7, 57, 23); panel_4.add(btnROIselectall); lblROIselect = new JLabel("Select:"); lblROIselect.setEnabled(false); lblROIselect.setBounds(37, 11, 46, 14); panel_4.add(lblROIselect); tabsROI = new JTabbedPane(JTabbedPane.TOP); tabsROI.addChangeListener(new ChangeListener() { public void stateChanged(ChangeEvent arg0) { try { ResetStatusLabel(); } catch (NullPointerException e) { // Form is still initialising return; } int tab = tabsROI.getSelectedIndex(); switch (tab) { case 0: UpdateROIProd(); break; case 1: UpdateROIEnergy(); break; case 2: UpdateROIMaint(); break; case 3: UpdateROIWaste(); break; } } }); tabsROI.setBorder(new SoftBevelBorder(BevelBorder.LOWERED, null, null, null, null)); tabsROI.setBounds(29, 72, 470, 424); pnlROI.add(tabsROI); pnlProdROI = new JPanel(); pnlProdROI.setBackground(Color.WHITE); tabsROI.addTab("Productivity", null, pnlProdROI, "ROI based on productivity"); pnlProdROI.setLayout(null); lblThisToolIlllustrates = new JLabel( "This tool illlustrates the long-term financial benfits of particular machines and options in"); lblThisToolIlllustrates.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblThisToolIlllustrates.setForeground(Color.GRAY); lblThisToolIlllustrates.setBounds(10, 11, 439, 14); pnlProdROI.add(lblThisToolIlllustrates); lblInTermsOf = new JLabel("terms of productivity gains."); lblInTermsOf.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblInTermsOf.setForeground(Color.GRAY); lblInTermsOf.setBounds(10, 27, 317, 14); pnlProdROI.add(lblInTermsOf); pnlGraphProd = new JPanel(); pnlGraphProd.setBackground(Color.WHITE); pnlGraphProd.setBorder(new SoftBevelBorder(BevelBorder.LOWERED, Color.LIGHT_GRAY, null, null, null)); pnlGraphProd.setBounds(10, 100, 439, 230); pnlProdROI.add(pnlGraphProd); pnlGraphProd.setLayout(null); pnlGraphProdInner = new ChartPanel(null); pnlGraphProdInner.setBounds(2, 2, 435, 226); //pnlGraphProd.add(pnlGraphProdInner); try { lblNoGraph = new JLabel( new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/no_preview.png")))); } catch (IOException e2) { e2.printStackTrace(); } lblNoGraph.setBounds(2, 2, 435, 226); pnlGraphProd.add(lblNoGraph); lblSellingPrice = new JLabel("Selling price:"); lblSellingPrice.setEnabled(false); lblSellingPrice.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblSellingPrice.setBounds(10, 52, 60, 14); pnlProdROI.add(lblSellingPrice); txtsellingprice = new JTextField(); txtsellingprice.setToolTipText("Average selling price of the material per unit weight"); txtsellingprice.setEnabled(false); txtsellingprice.addFocusListener(new FocusAdapter() { @Override public void focusGained(FocusEvent arg0) { txtsellingprice.selectAll(); } }); txtsellingprice.getDocument().addDocumentListener(new DocumentListener() { @Override public void changedUpdate(DocumentEvent arg0) { } @Override public void insertUpdate(DocumentEvent arg0) { UpdateROIValue(); } @Override public void removeUpdate(DocumentEvent arg0) { UpdateROIValue(); } }); txtsellingprice.setFont(new Font("Tahoma", Font.PLAIN, 11)); txtsellingprice.setBounds(90, 49, 65, 20); pnlProdROI.add(txtsellingprice); txtsellingprice.setColumns(10); lblPerTonne = new JLabel("per tonne"); lblPerTonne.setEnabled(false); lblPerTonne.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblPerTonne.setBounds(160, 52, 70, 14); pnlProdROI.add(lblPerTonne); lblContribution = new JLabel("Contribution:"); lblContribution.setEnabled(false); lblContribution.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblContribution.setBounds(10, 75, 70, 14); pnlProdROI.add(lblContribution); txtcontribution = new JTextField(); txtcontribution.setToolTipText("Contribution percentage"); txtcontribution.setEnabled(false); txtcontribution.addFocusListener(new FocusAdapter() { @Override public void focusGained(FocusEvent e) { txtcontribution.selectAll(); } }); txtcontribution.getDocument().addDocumentListener(new DocumentListener() { @Override public void changedUpdate(DocumentEvent e) { } @Override public void insertUpdate(DocumentEvent e) { UpdateROIValue(); } @Override public void removeUpdate(DocumentEvent e) { UpdateROIValue(); } }); txtcontribution.setFont(new Font("Tahoma", Font.PLAIN, 11)); txtcontribution.setBounds(90, 73, 65, 20); pnlProdROI.add(txtcontribution); txtcontribution.setColumns(10); lblpercent = new JLabel("%"); lblpercent.setEnabled(false); lblpercent.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblpercent.setBounds(160, 76, 11, 14); pnlProdROI.add(lblpercent); lblValueAddedlbl = new JLabel("Value added:"); lblValueAddedlbl.setEnabled(false); lblValueAddedlbl.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblValueAddedlbl.setBounds(279, 52, 70, 14); pnlProdROI.add(lblValueAddedlbl); lblvalueadded = new JLabel("\u00A30.00 / tonne"); lblvalueadded.setToolTipText("Value added per unit weight"); lblvalueadded.setEnabled(false); lblvalueadded.setFont(new Font("Tahoma", Font.BOLD, 12)); lblvalueadded.setBounds(279, 71, 170, 20); pnlProdROI.add(lblvalueadded); cmbMarg1 = new JComboBox(); cmbMarg1.setToolTipText("Old machine"); cmbMarg1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { UpdateROIProd(); } }); cmbMarg1.setEnabled(false); cmbMarg1.setFont(new Font("Tahoma", Font.PLAIN, 11)); cmbMarg1.setBounds(10, 359, 111, 20); pnlProdROI.add(cmbMarg1); cmbMarg2 = new JComboBox(); cmbMarg2.setToolTipText("New machine"); cmbMarg2.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { UpdateROIProd(); } }); cmbMarg2.setEnabled(false); cmbMarg2.setFont(new Font("Tahoma", Font.PLAIN, 11)); cmbMarg2.setBounds(141, 359, 111, 20); pnlProdROI.add(cmbMarg2); lblMarginalImprovement = new JLabel("\u00A30.00 per annum"); lblMarginalImprovement.setToolTipText("Marginal improvement"); lblMarginalImprovement.setEnabled(false); lblMarginalImprovement.setFont(new Font("Tahoma", Font.BOLD, 13)); lblMarginalImprovement.setBounds(279, 358, 170, 20); pnlProdROI.add(lblMarginalImprovement); lblSelectMachines = new JLabel("Select 2 machines to view the marginal improvement between them:"); lblSelectMachines.setForeground(Color.GRAY); lblSelectMachines.setFont(new Font("Tahoma", Font.BOLD, 11)); lblSelectMachines.setBounds(10, 338, 412, 14); pnlProdROI.add(lblSelectMachines); lblpound1 = new JLabel("\u00A3"); lblpound1.setEnabled(false); lblpound1.setBounds(80, 52, 11, 14); pnlProdROI.add(lblpound1); lblTo = new JLabel("to"); lblTo.setForeground(Color.GRAY); lblTo.setFont(new Font("Tahoma", Font.BOLD, 11)); lblTo.setBounds(125, 362, 16, 14); pnlProdROI.add(lblTo); label = new JLabel("="); label.setForeground(Color.GRAY); label.setFont(new Font("Tahoma", Font.BOLD, 13)); label.setBounds(259, 362, 11, 14); pnlProdROI.add(label); pnlEnergy = new JPanel(); pnlEnergy.setBackground(Color.WHITE); tabsROI.addTab("Energy Efficiency", null, pnlEnergy, "ROI based on machine power usage"); pnlEnergy.setLayout(null); lblThisToolHighlights = new JLabel( "This tool highlights power consumption differences between machines, and the resulting"); lblThisToolHighlights.setForeground(Color.GRAY); lblThisToolHighlights.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblThisToolHighlights.setBounds(10, 11, 439, 14); pnlEnergy.add(lblThisToolHighlights); lblImpactOnFinancial = new JLabel("impact on financial returns."); lblImpactOnFinancial.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblImpactOnFinancial.setForeground(Color.GRAY); lblImpactOnFinancial.setBounds(10, 27, 439, 14); pnlEnergy.add(lblImpactOnFinancial); rdbtnAveragePower = new JRadioButton("Average power"); rdbtnAveragePower.setToolTipText("Select \"average power\" input type"); rdbtnAveragePower.setFont(new Font("Tahoma", Font.PLAIN, 11)); rdbtnAveragePower.setEnabled(false); rdbtnAveragePower.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { ClearPowerTxts(); txtaveragepower.setEnabled(true); txthourlyusage.setEnabled(false); txtannualusage.setEnabled(false); lblKw.setEnabled(true); lblKwh.setEnabled(false); lblKwh_1.setEnabled(false); txtaveragepower.requestFocusInWindow(); UpdateEnergyData(); } }); rdbtnAveragePower.setSelected(true); rdbtnAveragePower.setBackground(Color.WHITE); rdbtnAveragePower.setBounds(349, 44, 109, 23); pnlEnergy.add(rdbtnAveragePower); rdbtnHourlyUsage = new JRadioButton("Hourly usage"); rdbtnHourlyUsage.setToolTipText("Select \"hourly usage\" input type"); rdbtnHourlyUsage.setFont(new Font("Tahoma", Font.PLAIN, 11)); rdbtnHourlyUsage.setEnabled(false); rdbtnHourlyUsage.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { ClearPowerTxts(); txtaveragepower.setEnabled(false); txthourlyusage.setEnabled(true); txtannualusage.setEnabled(false); lblKw.setEnabled(false); lblKwh.setEnabled(true); lblKwh_1.setEnabled(false); txthourlyusage.requestFocusInWindow(); UpdateEnergyData(); } }); rdbtnHourlyUsage.setBackground(Color.WHITE); rdbtnHourlyUsage.setBounds(349, 70, 109, 23); pnlEnergy.add(rdbtnHourlyUsage); rdbtnAnnualUsage = new JRadioButton("Annual usage"); rdbtnAnnualUsage.setToolTipText("Select \"annual usage\" input type"); rdbtnAnnualUsage.setFont(new Font("Tahoma", Font.PLAIN, 11)); rdbtnAnnualUsage.setEnabled(false); rdbtnAnnualUsage.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { ClearPowerTxts(); txtaveragepower.setEnabled(false); txthourlyusage.setEnabled(false); txtannualusage.setEnabled(true); lblKw.setEnabled(false); lblKwh.setEnabled(false); lblKwh_1.setEnabled(true); txtannualusage.requestFocusInWindow(); UpdateEnergyData(); } }); rdbtnAnnualUsage.setBackground(Color.WHITE); rdbtnAnnualUsage.setBounds(349, 97, 109, 23); pnlEnergy.add(rdbtnAnnualUsage); rdbtnsPower.add(rdbtnAveragePower); rdbtnsPower.add(rdbtnHourlyUsage); rdbtnsPower.add(rdbtnAnnualUsage); lblEnergyCostl = new JLabel("Energy cost:"); lblEnergyCostl.setEnabled(false); lblEnergyCostl.setFont(new Font("Tahoma", Font.BOLD, 11)); lblEnergyCostl.setBounds(10, 101, 72, 14); pnlEnergy.add(lblEnergyCostl); lblpound2 = new JLabel("\u00A3"); lblpound2.setEnabled(false); lblpound2.setFont(new Font("Tahoma", Font.PLAIN, 12)); lblpound2.setBounds(91, 100, 13, 14); pnlEnergy.add(lblpound2); txtenergycost = new JTextField(); txtenergycost.setToolTipText("Raw energy cost, per kWh"); txtenergycost.setEnabled(false); txtenergycost.addFocusListener(new FocusAdapter() { @Override public void focusGained(FocusEvent arg0) { txtenergycost.selectAll(); } }); txtenergycost.getDocument().addDocumentListener(new DocumentListener() { @Override public void removeUpdate(DocumentEvent arg0) { UpdateROIEnergy(); } @Override public void insertUpdate(DocumentEvent arg0) { UpdateROIEnergy(); } @Override public void changedUpdate(DocumentEvent arg0) { } }); txtenergycost.setFont(new Font("Tahoma", Font.PLAIN, 12)); txtenergycost.setBounds(102, 98, 74, 20); pnlEnergy.add(txtenergycost); txtenergycost.setColumns(10); lblPerKwh = new JLabel("per kWh"); lblPerKwh.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblPerKwh.setEnabled(false); lblPerKwh.setBounds(179, 101, 46, 14); pnlEnergy.add(lblPerKwh); txtaveragepower = new JTextField(); txtaveragepower.setToolTipText("Average power in kW"); txtaveragepower.setEnabled(false); txtaveragepower.getDocument().addDocumentListener(new DocumentListener() { @Override public void removeUpdate(DocumentEvent arg0) { UpdateEnergyData(); } @Override public void insertUpdate(DocumentEvent arg0) { UpdateEnergyData(); } @Override public void changedUpdate(DocumentEvent arg0) { } }); txtaveragepower.addFocusListener(new FocusAdapter() { @Override public void focusGained(FocusEvent e) { txtaveragepower.selectAll(); } }); txtaveragepower.addMouseListener(new MouseAdapter() { @Override public void mouseReleased(MouseEvent arg0) { if (txtLimitRunSpeed.contains(arg0.getPoint())) { if (!txtaveragepower.isEnabled()) { rdbtnAveragePower.doClick(); } } } }); txtaveragepower.setBounds(233, 47, 86, 20); pnlEnergy.add(txtaveragepower); txtaveragepower.setColumns(10); txthourlyusage = new JTextField(); txthourlyusage.setToolTipText("Average hourly energy usage"); txthourlyusage.setEnabled(false); txthourlyusage.getDocument().addDocumentListener(new DocumentListener() { @Override public void removeUpdate(DocumentEvent e) { UpdateEnergyData(); } @Override public void insertUpdate(DocumentEvent e) { UpdateEnergyData(); } @Override public void changedUpdate(DocumentEvent e) { } }); txthourlyusage.addFocusListener(new FocusAdapter() { @Override public void focusGained(FocusEvent e) { txthourlyusage.selectAll(); } }); txthourlyusage.addMouseListener(new MouseAdapter() { @Override public void mouseReleased(MouseEvent arg0) { if (txtLimitRunSpeed.contains(arg0.getPoint())) { if (!txthourlyusage.isEnabled()) rdbtnHourlyUsage.doClick(); } } }); txthourlyusage.setColumns(10); txthourlyusage.setBounds(233, 73, 86, 20); pnlEnergy.add(txthourlyusage); txtannualusage = new JTextField(); txtannualusage.setToolTipText("Average annual energy usage"); txtannualusage.setEnabled(false); txtannualusage.getDocument().addDocumentListener(new DocumentListener() { @Override public void removeUpdate(DocumentEvent e) { UpdateEnergyData(); } @Override public void insertUpdate(DocumentEvent e) { UpdateEnergyData(); } @Override public void changedUpdate(DocumentEvent e) { } }); txtannualusage.addFocusListener(new FocusAdapter() { @Override public void focusGained(FocusEvent e) { txtannualusage.selectAll(); } }); txtannualusage.addMouseListener(new MouseAdapter() { @Override public void mouseReleased(MouseEvent arg0) { if (txtLimitRunSpeed.contains(arg0.getPoint())) { if (!txtannualusage.isEnabled()) rdbtnAnnualUsage.doClick(); } } }); txtannualusage.setColumns(10); txtannualusage.setBounds(233, 99, 86, 20); pnlEnergy.add(txtannualusage); cmbMachineEnergy = new JComboBox(); cmbMachineEnergy.setEnabled(false); cmbMachineEnergy.setToolTipText("Select machine to edit"); cmbMachineEnergy.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { UpdateEnergyView(); } }); cmbMachineEnergy.setBounds(69, 46, 152, 23); pnlEnergy.add(cmbMachineEnergy); lblMachine_1 = new JLabel("Machine:"); lblMachine_1.setEnabled(false); lblMachine_1.setFont(new Font("Tahoma", Font.BOLD, 11)); lblMachine_1.setBounds(10, 50, 59, 14); pnlEnergy.add(lblMachine_1); lblKw = new JLabel("kW"); lblKw.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblKw.setEnabled(false); lblKw.setBounds(323, 50, 15, 14); pnlEnergy.add(lblKw); lblKwh = new JLabel("kWh"); lblKwh.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblKwh.setEnabled(false); lblKwh.setBounds(323, 76, 26, 14); pnlEnergy.add(lblKwh); lblKwh_1 = new JLabel("MWh"); lblKwh_1.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblKwh_1.setEnabled(false); lblKwh_1.setBounds(323, 102, 26, 14); pnlEnergy.add(lblKwh_1); pnlGraphEnergy = new JPanel(); pnlGraphEnergy.setBorder(new SoftBevelBorder(BevelBorder.LOWERED, Color.LIGHT_GRAY, null, null, null)); pnlGraphEnergy.setBackground(Color.WHITE); pnlGraphEnergy.setBounds(10, 126, 439, 226); pnlEnergy.add(pnlGraphEnergy); pnlGraphEnergy.setLayout(null); try { lblNoGraph2 = new JLabel( new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/no_preview.png")))); } catch (IOException e2) { e2.printStackTrace(); } lblNoGraph2.setBounds(2, 2, 435, 222); pnlGraphEnergy.add(lblNoGraph2); lblPleaseSetPower = new JLabel("Please set power usage for each machine"); lblPleaseSetPower.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblPleaseSetPower.setEnabled(false); lblPleaseSetPower.setForeground(Color.GRAY); lblPleaseSetPower.setBounds(10, 74, 215, 14); pnlEnergy.add(lblPleaseSetPower); lblMarginalEnergy = new JLabel("\u00A30.00 per annum"); lblMarginalEnergy.setToolTipText("Marginal improvement"); lblMarginalEnergy.setFont(new Font("Tahoma", Font.BOLD, 13)); lblMarginalEnergy.setEnabled(false); lblMarginalEnergy.setBounds(279, 358, 170, 20); pnlEnergy.add(lblMarginalEnergy); label_4 = new JLabel("="); label_4.setForeground(Color.GRAY); label_4.setFont(new Font("Tahoma", Font.BOLD, 13)); label_4.setBounds(259, 362, 11, 14); pnlEnergy.add(label_4); cmbMargEnergy2 = new JComboBox(); cmbMargEnergy2.setToolTipText("New machine"); cmbMargEnergy2.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { UpdateROIEnergy(); } }); cmbMargEnergy2.setFont(new Font("Tahoma", Font.PLAIN, 11)); cmbMargEnergy2.setEnabled(false); cmbMargEnergy2.setBounds(141, 359, 111, 20); pnlEnergy.add(cmbMargEnergy2); label_5 = new JLabel("to"); label_5.setForeground(Color.GRAY); label_5.setFont(new Font("Tahoma", Font.BOLD, 11)); label_5.setBounds(125, 362, 16, 14); pnlEnergy.add(label_5); cmbMargEnergy1 = new JComboBox(); cmbMargEnergy1.setToolTipText("Old machine"); cmbMargEnergy1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { UpdateROIEnergy(); } }); cmbMargEnergy1.setFont(new Font("Tahoma", Font.PLAIN, 11)); cmbMargEnergy1.setEnabled(false); cmbMargEnergy1.setBounds(10, 359, 111, 20); pnlEnergy.add(cmbMargEnergy1); pnlMaint = new JPanel(); pnlMaint.setBackground(Color.WHITE); tabsROI.addTab("Maintenance", null, pnlMaint, "ROI based on maintenance costs"); tabsROI.setMnemonicAt(2, 65); pnlMaint.setLayout(null); lblThisToolDemonstrates_1 = new JLabel( "This tool demonstrates the maintenance reduction benefits of machines."); lblThisToolDemonstrates_1.setBounds(10, 11, 421, 14); lblThisToolDemonstrates_1.setForeground(Color.GRAY); lblThisToolDemonstrates_1.setFont(new Font("Tahoma", Font.PLAIN, 11)); pnlMaint.add(lblThisToolDemonstrates_1); lblMaintenanceHoursPer = new JLabel("Annual downtime:"); lblMaintenanceHoursPer.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblMaintenanceHoursPer.setEnabled(false); lblMaintenanceHoursPer.setBounds(10, 64, 86, 14); pnlMaint.add(lblMaintenanceHoursPer); lblRepairCostsPer = new JLabel("Labour costs per hour:"); lblRepairCostsPer.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblRepairCostsPer.setEnabled(false); lblRepairCostsPer.setBounds(255, 36, 111, 14); pnlMaint.add(lblRepairCostsPer); lblPartsCostsPer = new JLabel("Parts costs per year:"); lblPartsCostsPer.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblPartsCostsPer.setEnabled(false); lblPartsCostsPer.setBounds(255, 64, 101, 14); pnlMaint.add(lblPartsCostsPer); cmbMachinesmaintenance = new JComboBox(); cmbMachinesmaintenance.setEnabled(false); cmbMachinesmaintenance.setToolTipText("Please set maintenance costs for each machine"); cmbMachinesmaintenance.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { ViewMaintCosts(); } }); cmbMachinesmaintenance.setBounds(79, 30, 152, 23); pnlMaint.add(cmbMachinesmaintenance); txtmaintenancehours = new JTextField(); txtmaintenancehours.setToolTipText("Hours per year for which machine is not running due to maintenance"); txtmaintenancehours.setEnabled(false); txtmaintenancehours.addFocusListener(new FocusAdapter() { @Override public void focusGained(FocusEvent e) { txtmaintenancehours.selectAll(); } }); txtmaintenancehours.getDocument().addDocumentListener(new DocumentListener() { @Override public void removeUpdate(DocumentEvent e) { UpdateMaintCosts(); } @Override public void insertUpdate(DocumentEvent e) { UpdateMaintCosts(); } @Override public void changedUpdate(DocumentEvent e) { } }); txtmaintenancehours.setBounds(106, 61, 67, 20); pnlMaint.add(txtmaintenancehours); txtmaintenancehours.setColumns(10); txtmaintenanceperhour = new JTextField(); txtmaintenanceperhour.setToolTipText("Hourly labour costs for maintenance"); txtmaintenanceperhour.setEnabled(false); txtmaintenanceperhour.addFocusListener(new FocusAdapter() { @Override public void focusGained(FocusEvent e) { txtmaintenanceperhour.selectAll(); } }); txtmaintenanceperhour.getDocument().addDocumentListener(new DocumentListener() { @Override public void removeUpdate(DocumentEvent e) { UpdateMaintCosts(); } @Override public void insertUpdate(DocumentEvent e) { UpdateMaintCosts(); } @Override public void changedUpdate(DocumentEvent e) { } }); txtmaintenanceperhour.setColumns(10); txtmaintenanceperhour.setBounds(382, 33, 67, 20); pnlMaint.add(txtmaintenanceperhour); txtmaintenanceparts = new JTextField(); txtmaintenanceparts.setToolTipText("Annual cost of maintenance parts for this machine"); txtmaintenanceparts.setEnabled(false); txtmaintenanceparts.addFocusListener(new FocusAdapter() { @Override public void focusGained(FocusEvent e) { txtmaintenanceparts.selectAll(); } }); txtmaintenanceparts.getDocument().addDocumentListener(new DocumentListener() { @Override public void removeUpdate(DocumentEvent e) { UpdateMaintCosts(); } @Override public void insertUpdate(DocumentEvent e) { UpdateMaintCosts(); } @Override public void changedUpdate(DocumentEvent e) { } }); txtmaintenanceparts.setColumns(10); txtmaintenanceparts.setBounds(382, 61, 67, 20); pnlMaint.add(txtmaintenanceparts); lbltotalmaintcost = new JLabel("\u00A30.00 / year"); lbltotalmaintcost.setToolTipText("Total annual spend on maintenance for this machine (labour + parts)"); lbltotalmaintcost.setForeground(Color.GRAY); lbltotalmaintcost.setEnabled(false); lbltotalmaintcost.setHorizontalAlignment(SwingConstants.LEFT); lbltotalmaintcost.setFont(new Font("Tahoma", Font.BOLD, 11)); lbltotalmaintcost.setBounds(344, 87, 105, 14); pnlMaint.add(lbltotalmaintcost); lblpound10 = new JLabel("\u00A3"); lblpound10.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblpound10.setEnabled(false); lblpound10.setBounds(373, 36, 11, 14); pnlMaint.add(lblpound10); lblpound11 = new JLabel("\u00A3"); lblpound11.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblpound11.setEnabled(false); lblpound11.setBounds(373, 64, 11, 14); pnlMaint.add(lblpound11); pnlGraphMaint = new JPanel(); pnlGraphMaint.setBorder(new SoftBevelBorder(BevelBorder.LOWERED, Color.LIGHT_GRAY, null, null, null)); pnlGraphMaint.setBackground(Color.WHITE); pnlGraphMaint.setBounds(10, 110, 439, 242); pnlMaint.add(pnlGraphMaint); pnlGraphMaint.setLayout(null); try { lblNoGraph3 = new JLabel( new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/no_preview.png")))); } catch (IOException e2) { e2.printStackTrace(); } lblNoGraph3.setBounds(2, 2, 435, 238); pnlGraphMaint.add(lblNoGraph3); cmbMargMaint1 = new JComboBox(); cmbMargMaint1.setToolTipText("Old machine"); cmbMargMaint1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { UpdateROIMaint(); } }); cmbMargMaint1.setFont(new Font("Tahoma", Font.PLAIN, 11)); cmbMargMaint1.setEnabled(false); cmbMargMaint1.setBounds(10, 359, 111, 20); pnlMaint.add(cmbMargMaint1); label_8 = new JLabel("to"); label_8.setForeground(Color.GRAY); label_8.setFont(new Font("Tahoma", Font.BOLD, 11)); label_8.setBounds(125, 362, 16, 14); pnlMaint.add(label_8); cmbMargMaint2 = new JComboBox(); cmbMargMaint2.setToolTipText("New machine"); cmbMargMaint2.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { UpdateROIMaint(); } }); cmbMargMaint2.setFont(new Font("Tahoma", Font.PLAIN, 11)); cmbMargMaint2.setEnabled(false); cmbMargMaint2.setBounds(141, 359, 111, 20); pnlMaint.add(cmbMargMaint2); label_9 = new JLabel("="); label_9.setForeground(Color.GRAY); label_9.setFont(new Font("Tahoma", Font.BOLD, 13)); label_9.setBounds(259, 362, 11, 14); pnlMaint.add(label_9); lblMarginalMaint = new JLabel("\u00A30.00 per annum"); lblMarginalMaint.setToolTipText("Marginal improvement"); lblMarginalMaint.setFont(new Font("Tahoma", Font.BOLD, 13)); lblMarginalMaint.setEnabled(false); lblMarginalMaint.setBounds(279, 358, 170, 20); pnlMaint.add(lblMarginalMaint); lblProdLoss = new JLabel("\u00A30.00 / year"); lblProdLoss.setToolTipText("Loss in production value due to downtime"); lblProdLoss.setForeground(Color.GRAY); lblProdLoss.setEnabled(false); lblProdLoss.setHorizontalAlignment(SwingConstants.LEFT); lblProdLoss.setFont(new Font("Tahoma", Font.BOLD, 11)); lblProdLoss.setBounds(106, 87, 125, 14); pnlMaint.add(lblProdLoss); lblHrs_1 = new JLabel("hrs"); lblHrs_1.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblHrs_1.setEnabled(false); lblHrs_1.setBounds(180, 64, 16, 14); pnlMaint.add(lblHrs_1); label_10 = new JLabel("Machine:"); label_10.setEnabled(false); label_10.setFont(new Font("Tahoma", Font.BOLD, 11)); label_10.setBounds(10, 34, 59, 14); pnlMaint.add(label_10); label_11 = new JLabel("="); label_11.setEnabled(false); label_11.setForeground(Color.GRAY); label_11.setFont(new Font("Tahoma", Font.BOLD, 13)); label_11.setBounds(88, 87, 11, 14); pnlMaint.add(label_11); label_12 = new JLabel("="); label_12.setEnabled(false); label_12.setForeground(Color.GRAY); label_12.setFont(new Font("Tahoma", Font.BOLD, 13)); label_12.setBounds(323, 87, 11, 14); pnlMaint.add(label_12); lblAnnualTotal = new JLabel("Annual total"); lblAnnualTotal.setEnabled(false); lblAnnualTotal.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblAnnualTotal.setBounds(255, 87, 67, 14); pnlMaint.add(lblAnnualTotal); lblProductionLoss = new JLabel("Production loss"); lblProductionLoss.setEnabled(false); lblProductionLoss.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblProductionLoss.setBounds(10, 87, 77, 14); pnlMaint.add(lblProductionLoss); pnlWaste = new JPanel(); pnlWaste.setBackground(Color.WHITE); tabsROI.addTab("Waste Reduction", null, pnlWaste, "ROI based on waste reduction"); pnlWaste.setLayout(null); lblThisToolDemonstrates = new JLabel( "This tool demonstrates the waste reduction capabilities of particular machines."); lblThisToolDemonstrates.setForeground(Color.GRAY); lblThisToolDemonstrates.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblThisToolDemonstrates.setBounds(10, 11, 439, 14); pnlWaste.add(lblThisToolDemonstrates); lblWasteSavedPer_1 = new JLabel("Waste saved per splice due to flag detection camera:"); lblWasteSavedPer_1.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblWasteSavedPer_1.setEnabled(false); lblWasteSavedPer_1.setBounds(10, 39, 256, 14); pnlWaste.add(lblWasteSavedPer_1); txtwastesavedflags = new JTextField(); txtwastesavedflags.setToolTipText("Saving per splice"); txtwastesavedflags.setEnabled(false); txtwastesavedflags.addFocusListener(new FocusAdapter() { @Override public void focusGained(FocusEvent e) { txtwastesavedflags.selectAll(); } }); txtwastesavedflags.getDocument().addDocumentListener(new DocumentListener() { @Override public void removeUpdate(DocumentEvent e) { UpdateROIWaste(); } @Override public void insertUpdate(DocumentEvent e) { UpdateROIWaste(); } @Override public void changedUpdate(DocumentEvent e) { } }); txtwastesavedflags.setBounds(286, 36, 86, 20); pnlWaste.add(txtwastesavedflags); txtwastesavedflags.setColumns(10); lblM_1 = new JLabel("m"); lblM_1.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblM_1.setEnabled(false); lblM_1.setBounds(378, 39, 46, 14); pnlWaste.add(lblM_1); lblWasteSavedPer_2 = new JLabel("Waste saved per mother roll due to alignment guide:"); lblWasteSavedPer_2.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblWasteSavedPer_2.setEnabled(false); lblWasteSavedPer_2.setBounds(10, 64, 256, 14); pnlWaste.add(lblWasteSavedPer_2); txtwastesavedguide = new JTextField(); txtwastesavedguide.setToolTipText("Saving per mother roll"); txtwastesavedguide.setEnabled(false); txtwastesavedguide.getDocument().addDocumentListener(new DocumentListener() { @Override public void removeUpdate(DocumentEvent e) { UpdateROIWaste(); } @Override public void insertUpdate(DocumentEvent e) { UpdateROIWaste(); } @Override public void changedUpdate(DocumentEvent e) { } }); txtwastesavedguide.addFocusListener(new FocusAdapter() { @Override public void focusGained(FocusEvent e) { txtwastesavedguide.selectAll(); } }); txtwastesavedguide.setBounds(286, 61, 86, 20); pnlWaste.add(txtwastesavedguide); txtwastesavedguide.setColumns(10); lblM_2 = new JLabel("m"); lblM_2.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblM_2.setEnabled(false); lblM_2.setBounds(378, 64, 46, 14); pnlWaste.add(lblM_2); pnlGraphWaste = new JPanel(); pnlGraphWaste.setBorder(new SoftBevelBorder(BevelBorder.LOWERED, Color.LIGHT_GRAY, null, null, null)); pnlGraphWaste.setBackground(Color.WHITE); pnlGraphWaste.setBounds(10, 90, 439, 262); pnlWaste.add(pnlGraphWaste); pnlGraphWaste.setLayout(null); try { lblNoGraph4 = new JLabel( new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/no_preview.png")))); } catch (IOException e2) { e2.printStackTrace(); } lblNoGraph4.setBounds(2, 2, 435, 258); pnlGraphWaste.add(lblNoGraph4); cmbMargWaste1 = new JComboBox(); cmbMargWaste1.setToolTipText("Old machine"); cmbMargWaste1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { UpdateROIWaste(); } }); cmbMargWaste1.setFont(new Font("Tahoma", Font.PLAIN, 11)); cmbMargWaste1.setEnabled(false); cmbMargWaste1.setBounds(10, 359, 111, 20); pnlWaste.add(cmbMargWaste1); label_1 = new JLabel("to"); label_1.setForeground(Color.GRAY); label_1.setFont(new Font("Tahoma", Font.BOLD, 11)); label_1.setBounds(125, 362, 16, 14); pnlWaste.add(label_1); cmbMargWaste2 = new JComboBox(); cmbMargWaste2.setToolTipText("New machine"); cmbMargWaste2.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { UpdateROIWaste(); } }); cmbMargWaste2.setFont(new Font("Tahoma", Font.PLAIN, 11)); cmbMargWaste2.setEnabled(false); cmbMargWaste2.setBounds(141, 359, 111, 20); pnlWaste.add(cmbMargWaste2); label_6 = new JLabel("="); label_6.setForeground(Color.GRAY); label_6.setFont(new Font("Tahoma", Font.BOLD, 13)); label_6.setBounds(259, 362, 11, 14); pnlWaste.add(label_6); lblMarginalWaste = new JLabel("0.00m per annum"); lblMarginalWaste.setToolTipText("Marginal improvement"); lblMarginalWaste.setFont(new Font("Tahoma", Font.BOLD, 13)); lblMarginalWaste.setEnabled(false); lblMarginalWaste.setBounds(279, 355, 170, 16); pnlWaste.add(lblMarginalWaste); lblMarginalWasteValue = new JLabel("(\u00A30.00 per annum)"); lblMarginalWasteValue.setToolTipText("Marginal improvement value"); lblMarginalWasteValue.setForeground(Color.GRAY); lblMarginalWasteValue.setFont(new Font("Tahoma", Font.BOLD, 11)); lblMarginalWasteValue.setBounds(279, 370, 170, 16); pnlWaste.add(lblMarginalWasteValue); machNames = new HashSet<String>(); jobNames = new HashSet<String>(); lblStatus = new JLabel(" Ready."); lblStatus.setFont(new Font("Tahoma", Font.PLAIN, 12)); frmTitanRoiCalculator.getContentPane().add(lblStatus, BorderLayout.SOUTH); lblmmin = new JLabel("(m/min)"); lblmmin.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblmmin.setEnabled(false); lblmmin.setBounds(206, 168, 44, 14); pnlJobs.add(lblmmin); objfilter = new OBJfilter(1); // labels for unit conversion labs = new JLabel[7]; labs[0] = lblmm0; labs[1] = lblmm1; labs[2] = lblmm2; labs[3] = lblgm3; labs[4] = lblmm3; labs[5] = lblmicro0; lblGsm = new JLabel("(gsm)"); lblGsm.setToolTipText("Switch the input type for density between gsm and g/cc"); lblGsm.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblGsm.setEnabled(false); lblGsm.addMouseListener(new MouseAdapter() { @Override public void mouseReleased(MouseEvent arg0) { if (lblGsm.isEnabled() && lblGsm.contains(arg0.getPoint())) { jobFormReady = false; try { //double oldval = Double.parseDouble(txtDensity.getText()); //double thickness = Double.parseDouble(txtThickness.getText()); double oldval = ((Job) listJobs.getSelectedValue()).getDensity(); double thickness = ((Job) listJobs.getSelectedValue()).getThickness(); if (lblGsm.getText().equals("(gsm)")) { lblGsm.setText("(g/cc)"); label_3.setVisible(false); lblgm3.setText("(gsm)"); txtDensity.setText(Double.toString(roundTwoDecimals(oldval * thickness))); ((Job) listJobs.getSelectedValue()).gsm = true; } else { lblGsm.setText("(gsm)"); label_3.setVisible(true); lblgm3.setText("(g/cm )"); txtDensity.setText(Double.toString(roundTwoDecimals(oldval))); ((Job) listJobs.getSelectedValue()).gsm = false; } } catch (Exception e) { lblGsm.setText("(gsm)"); label_3.setVisible(true); lblgm3.setText("(g/cm )"); txtDensity.setText("0.92"); } jobFormReady = true; } } @Override public void mouseEntered(MouseEvent arg0) { lblGsm.setForeground(new Color(0, 0, 128)); } @Override public void mouseExited(MouseEvent e) { lblGsm.setForeground(Color.black); } }); lblGsm.setForeground(new Color(0, 0, 0)); lblGsm.setCursor(new Cursor(Cursor.HAND_CURSOR)); lblGsm.setBounds(177, 102, 46, 14); pnlMaterials.add(lblGsm); lblOr = new JLabel("or:"); lblOr.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblOr.setEnabled(false); lblOr.setBounds(155, 102, 14, 14); pnlMaterials.add(lblOr); labs[6] = lblmmin; cmbUnwindType = new JComboBox(); cmbUnwindType.setToolTipText("Type of measure to use for the unwind quantity above"); cmbUnwindType.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { UpdateUnwindAmount(); } }); cmbUnwindType.setEnabled(false); cmbUnwindType .setModel(new DefaultComboBoxModel(new String[] { "Length (m)", "Weight (kg)", "Diameter (mm)" })); cmbUnwindType.setBounds(92, 124, 95, 20); pnlUnwinds.add(cmbUnwindType); txtWebWidth = new JTextField(); txtWebWidth.setToolTipText("Width of mother rolls"); txtWebWidth.setText("1350"); txtWebWidth.addFocusListener(new FocusAdapter() { @Override public void focusGained(FocusEvent arg0) { txtWebWidth.selectAll(); } }); txtWebWidth.setEnabled(false); txtWebWidth.getDocument().addDocumentListener(new DocumentListener() { @Override public void removeUpdate(DocumentEvent arg0) { UpdateJob(); } @Override public void insertUpdate(DocumentEvent arg0) { UpdateJob(); } @Override public void changedUpdate(DocumentEvent arg0) { } }); txtWebWidth.setBounds(92, 26, 86, 20); pnlUnwinds.add(txtWebWidth); txtWebWidth.setColumns(10); lblAverageFlags = new JLabel("Average Flags:"); lblAverageFlags.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblAverageFlags.setToolTipText("The average number of flags in each mother roll"); lblAverageFlags.setEnabled(false); lblAverageFlags.setBounds(14, 79, 75, 14); pnlUnwinds.add(lblAverageFlags); txtFlagCount = new JTextField(); txtFlagCount.setToolTipText("The average number of flags in each mother roll"); txtFlagCount.addFocusListener(new FocusAdapter() { @Override public void focusGained(FocusEvent arg0) { txtFlagCount.selectAll(); } }); txtFlagCount.getDocument().addDocumentListener(new JobInputChangeListener()); txtFlagCount.setEnabled(false); txtFlagCount.setText("1"); txtFlagCount.setBounds(92, 76, 43, 20); pnlUnwinds.add(txtFlagCount); txtFlagCount.setColumns(10); lblPerRoll = new JLabel("per roll"); lblPerRoll.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblPerRoll.setEnabled(false); lblPerRoll.setBounds(140, 79, 46, 14); pnlUnwinds.add(lblPerRoll); txtLimitRunSpeed = new JTextField(); txtLimitRunSpeed.setToolTipText( "Override for top machine speed (may be required for particular materials or environments)"); txtLimitRunSpeed.addMouseListener(new MouseAdapter() { @Override public void mouseReleased(MouseEvent arg0) { if (txtLimitRunSpeed.contains(arg0.getPoint())) { txtLimitRunSpeed.setEnabled(true); chckbxLimitRunSpeed.setSelected(true); txtLimitRunSpeed.requestFocusInWindow(); txtLimitRunSpeed.selectAll(); UpdateJob(); } } }); txtLimitRunSpeed.addFocusListener(new FocusAdapter() { @Override public void focusGained(FocusEvent e) { if (txtLimitRunSpeed.isEnabled()) { txtLimitRunSpeed.selectAll(); chckbxLimitRunSpeed.setSelected(true); } } }); txtLimitRunSpeed.getDocument().addDocumentListener(new JobInputChangeListener()); txtLimitRunSpeed.setEnabled(false); txtLimitRunSpeed.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { chckbxLimitRunSpeed.setSelected(true); } }); txtLimitRunSpeed.setText("800"); txtLimitRunSpeed.setColumns(10); txtLimitRunSpeed.setBounds(130, 165, 65, 20); pnlJobs.add(txtLimitRunSpeed); cmbRewindType = new JComboBox(); cmbRewindType.setToolTipText("Type of measure to use for rewind output above"); cmbRewindType.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { UpdateRewindAmount(); //UpdateJob(); } }); cmbRewindType.setEnabled(false); cmbRewindType .setModel(new DefaultComboBoxModel(new String[] { "Length (m)", "Weight (kg)", "Diameter (mm)" })); cmbRewindType.setBounds(109, 218, 95, 20); pnlJobs.add(cmbRewindType); chckbxLimitRunSpeed = new JCheckBox(""); chckbxLimitRunSpeed.setToolTipText( "Override for top machine speed (may be required for particular materials or environments)"); chckbxLimitRunSpeed.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (chckbxLimitRunSpeed.isSelected()) { txtLimitRunSpeed.setEnabled(true); txtLimitRunSpeed.requestFocusInWindow(); txtLimitRunSpeed.selectAll(); } else { txtLimitRunSpeed.setEnabled(false); } UpdateJob(); } }); chckbxLimitRunSpeed.setEnabled(false); chckbxLimitRunSpeed.setBounds(105, 164, 20, 20); pnlJobs.add(chckbxLimitRunSpeed); lblLimitRunSpeed = new JLabel("Speed Limit:"); lblLimitRunSpeed.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblLimitRunSpeed.setToolTipText( "Override for top machine speed (may be required for particular materials or environments)"); lblLimitRunSpeed.setEnabled(false); lblLimitRunSpeed.setBounds(47, 168, 59, 14); pnlJobs.add(lblLimitRunSpeed); lblKnifeType = new JLabel("Knife Type:"); lblKnifeType.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblKnifeType.setToolTipText("Select knife type for this job"); lblKnifeType.setEnabled(false); lblKnifeType.setHorizontalAlignment(SwingConstants.RIGHT); lblKnifeType.setBounds(46, 89, 59, 14); pnlJobs.add(lblKnifeType); cmbKnifeType = new JComboBox(); cmbKnifeType.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { UpdateJob(); } }); cmbKnifeType.setModel(new DefaultComboBoxModel(new String[] { "Razor in Air", "Rotary Shear" })); cmbKnifeType.setToolTipText("Select knife type for this job"); cmbKnifeType.setEnabled(false); cmbKnifeType.setBounds(109, 86, 95, 20); pnlJobs.add(cmbKnifeType); tabbedPane.setMnemonicAt(0, KeyEvent.VK_M); tabbedPane.setMnemonicAt(1, KeyEvent.VK_J); tabbedPane.setMnemonicAt(2, KeyEvent.VK_S); tabbedPane.setMnemonicAt(3, KeyEvent.VK_P); tabbedPane.setMnemonicAt(4, KeyEvent.VK_R); tabsROI.setMnemonicAt(0, KeyEvent.VK_D); tabsROI.setMnemonicAt(1, KeyEvent.VK_N); tabsROI.setMnemonicAt(3, KeyEvent.VK_W); scrollPane_4 = new JScrollPane(); scrollPane_4.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER); scrollPane_4.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER); scrollPane_4.setBorder(null); scrollPane_4.setBounds(522, 44, 245, 405); pnlROI.add(scrollPane_4); panel_11 = new JPanel(); panel_11.setToolTipText( "Click a machine to select it. Select two or more machines to compare their ROI measures."); scrollPane_4.setViewportView(panel_11); panel_11.setBackground(Color.WHITE); panel_11.setBorder(new SoftBevelBorder(BevelBorder.LOWERED, Color.LIGHT_GRAY, null, null, null)); panel_11.setLayout(new BorderLayout(0, 0)); listCompareRoi = new JList(listModel); panel_11.add(listCompareRoi, BorderLayout.NORTH); listCompareRoi.setToolTipText( "Click a machine to select it. Select two or more machines to compare their ROI measures."); listCompareRoi.setBorder(null); listCompareRoi.setSelectionModel(new DefaultListSelectionModel() { private static final long serialVersionUID = 1L; boolean gestureStarted = false; @Override public void setSelectionInterval(int index0, int index1) { if (!gestureStarted) { if (isSelectedIndex(index0)) { super.removeSelectionInterval(index0, index1); } else { super.addSelectionInterval(index0, index1); } } gestureStarted = true; } @Override public void setValueIsAdjusting(boolean isAdjusting) { if (isAdjusting == false) { gestureStarted = false; } } }); listCompareRoi.addListSelectionListener(new ROIListSelectionListener()); listCompareRoi.setCellRenderer(new MachineListRenderer()); listCompare.setSelectionModel(listCompareRoi.getSelectionModel()); btnJobUp = new JButton(""); btnJobUp.setToolTipText("Move job up"); btnJobUp.addActionListener(new JobUpListener()); try { btnJobUp.setIcon(new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/up.png")))); btnJobUp.setRolloverEnabled(true); btnJobUp.setRolloverIcon( new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/up_over.png")))); btnJobUp.setDisabledIcon( new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/up_dis.png")))); } catch (NullPointerException e11) { System.out.println("Image load error"); } catch (IOException e1) { e1.printStackTrace(); } btnJobUp.setEnabled(false); btnJobUp.setBounds(700, 463, 30, 30); pnlJob.add(btnJobUp); btnJobDown = new JButton(""); btnJobDown.setToolTipText("Move job down"); btnJobDown.addActionListener(new JobDownListener()); try { btnJobDown.setIcon(new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/down.png")))); btnJobDown.setRolloverEnabled(true); btnJobDown.setRolloverIcon( new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/down_over.png")))); btnJobDown.setDisabledIcon( new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/down_dis.png")))); } catch (NullPointerException e11) { System.out.println("Image load error"); } catch (IOException e1) { e1.printStackTrace(); } btnJobDown.setEnabled(false); btnJobDown.setBounds(737, 463, 30, 30); pnlJob.add(btnJobDown); btnNewJob = new JButton("Add New"); btnNewJob.setFont(new Font("Tahoma", Font.BOLD, 11)); btnNewJob.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { jobFormReady = false; ResetStatusLabel(); EnableJobForm(); // new ResetJobForm(); lblGsm.setText("(gsm)"); label_3.setVisible(true); lblgm3.setText("(g/cm )"); txtDensity.setText("0.92"); btnJobDelete.setEnabled(true); btnAddAll.setEnabled(true); /*if(listJobs.getSelectedIndex() == 0) btnJobUp.setEnabled(false); else btnJobUp.setEnabled(true); if(listJobs.getSelectedIndex() == jobModel.getSize()-1) btnJobDown.setEnabled(false); else btnJobDown.setEnabled(true);*/ int index = listJobs.getSelectedIndex(); int size = jobModel.getSize(); if (size >= Consts.JOB_LIST_LIMIT) { // Max list size ShowMessage("Maximum number of jobs allocated. Please delete before attempting to add more."); return; } String newName = getUniqueJobName("Job"); txtJobName.setText(newName); job = new Job(newName); jobNames.add(newName.toLowerCase()); //If no selection or if item in last position is selected, //add the new one to end of list, and select new one. if (index == -1 || (index + 1 == size)) { jobModel.addElement(job); listJobs.setSelectedIndex(size); listJobsAvail.setSelectedIndex(size); if (size > 0) btnJobUp.setEnabled(true); //Otherwise insert the new one after the current selection, //and select new one. } else { jobModel.insertElementAt(job, index + 1); listJobs.setSelectedIndex(index + 1); listJobsAvail.setSelectedIndex(index + 1); } // TODO don't reset form, or add copy button ResetStatusLabel(); jobFormReady = true; UpdateJob(); txtJobName.requestFocusInWindow(); } }); try { btnNewJob.setIcon(new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/plus.png")))); } catch (IOException e1) { e1.printStackTrace(); } btnNewJob.setToolTipText("Add new job"); btnNewJob.setBounds(522, 460, 110, 36); pnlJob.add(btnNewJob); lblJobConfiguration = new JLabel("Job Configuration"); lblJobConfiguration.setFont(new Font("Tahoma", Font.BOLD, 18)); lblJobConfiguration.setBounds(29, 18, 269, 22); pnlJob.add(lblJobConfiguration); btnJobDelete = new JButton(""); btnJobDelete.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { ResetStatusLabel(); Job selected = (Job) listJobs.getSelectedValue(); jobNames.remove(selected.getName().toLowerCase()); ListSelectionModel lsm = listJobs.getSelectionModel(); int firstSelected = lsm.getMinSelectionIndex(); int lastSelected = lsm.getMaxSelectionIndex(); jobModel.removeRange(firstSelected, lastSelected); int size = jobModel.size(); if (size == 0) { //List is empty: disable delete, up, and down buttons. /*btnJobDelete.setEnabled(false); btnJobUp.setEnabled(false); btnJobDown.setEnabled(false);*/ } else { //Adjust the selection. if (firstSelected == jobModel.getSize()) { //Removed item in last position. firstSelected--; } listJobs.setSelectedIndex(firstSelected); if (size == 21) { // No longer full list ResetStatusLabel(); } job = (Job) listJobs.getSelectedValue(); } } }); try { btnJobDelete .setIcon(new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/delete.png")))); btnJobDelete.setRolloverEnabled(true); btnJobDelete.setRolloverIcon( new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/delete_over.png")))); btnJobDelete.setDisabledIcon( new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/delete_dis.png")))); } catch (NullPointerException e11) { System.out.println("Image load error"); } catch (IOException e1) { e1.printStackTrace(); } btnJobDelete.setToolTipText("Delete job"); btnJobDelete.setRolloverEnabled(true); btnJobDelete.setEnabled(false); btnJobDelete.setBounds(651, 460, 36, 36); pnlJob.add(btnJobDelete); lblAddNewJobs = new JLabel( "Add new jobs to the list on the right, then configure unwind, rewind and material settings below"); lblAddNewJobs.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblAddNewJobs.setBounds(29, 45, 483, 14); pnlJob.add(lblAddNewJobs); lblJobs = new JLabel("Jobs"); lblJobs.setFont(new Font("Tahoma", Font.BOLD, 12)); lblJobs.setBounds(522, 19, 85, 14); pnlJob.add(lblJobs); panel_1 = new JPanel(); panel_1.setLayout(null); panel_1.setBorder(new TitledBorder(UIManager.getBorder("TitledBorder.border"), "Total Output", TitledBorder.LEADING, TitledBorder.TOP, null, null)); panel_1.setBounds(280, 380, 227, 116); pnlJob.add(panel_1); lblTargetOutputFor = new JLabel("Target output for job:"); lblTargetOutputFor.setEnabled(false); lblTargetOutputFor.setBounds(30, 22, 129, 14); panel_1.add(lblTargetOutputFor); txtTargetTotal = new JTextField(); txtTargetTotal.addFocusListener(new FocusAdapter() { @Override public void focusGained(FocusEvent e) { txtTargetTotal.selectAll(); } }); txtTargetTotal.getDocument().addDocumentListener(new JobInputChangeListener()); txtTargetTotal.setToolTipText("Total output quantity for this job"); txtTargetTotal.setText("10000"); txtTargetTotal.setEnabled(false); txtTargetTotal.setColumns(10); txtTargetTotal.setBounds(30, 43, 118, 20); panel_1.add(txtTargetTotal); cmbTargetTotal = new JComboBox(); cmbTargetTotal.setToolTipText("Type of measure to use for output quantity above"); cmbTargetTotal.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { UpdateTotalsAmount(); } }); cmbTargetTotal.setModel( new DefaultComboBoxModel(new String[] { "Length (m)", "Weight (kg)", "Weight (tonnes)" })); cmbTargetTotal.setEnabled(false); cmbTargetTotal.setBounds(30, 67, 118, 20); panel_1.add(cmbTargetTotal); lblCounts = new JLabel("0 reel(s), 0 set(s), 0 mother(s)"); lblCounts.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblCounts.setForeground(Color.GRAY); lblCounts.setBounds(30, 92, 187, 14); panel_1.add(lblCounts); panel_2 = new JPanel(); panel_2.setLayout(null); panel_2.setBorder(new TitledBorder(UIManager.getBorder("TitledBorder.border"), "Name", TitledBorder.LEADING, TitledBorder.TOP, null, new Color(0, 0, 0))); panel_2.setBounds(20, 72, 250, 83); pnlJob.add(panel_2); txtJobName = new JTextField(); txtJobName.addFocusListener(new FocusAdapter() { @Override public void focusGained(FocusEvent e) { txtJobName.selectAll(); } }); txtJobName.setBounds(90, 30, 145, 28); panel_2.add(txtJobName); txtJobName.getDocument().addDocumentListener(new DocumentListener() { @Override public void changedUpdate(DocumentEvent arg0) { } @Override public void insertUpdate(DocumentEvent arg0) { UpdateJobName(); } @Override public void removeUpdate(DocumentEvent arg0) { UpdateJobName(); } }); txtJobName.setToolTipText("Set the name of this job"); txtJobName.setFont(new Font("Tahoma", Font.BOLD, 12)); txtJobName.setEnabled(false); txtJobName.setColumns(10); lblJobName = new JLabel("Job name:"); lblJobName.setToolTipText("Set the name of this job"); lblJobName.setEnabled(false); lblJobName.setBounds(22, 31, 60, 24); panel_2.add(lblJobName); lblJobName.setFont(new Font("Tahoma", Font.PLAIN, 13)); btnResetJobs = new JButton("Reset"); btnResetJobs.setBounds(20, 460, 100, 36); pnlJob.add(btnResetJobs); btnResetJobs.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { ResetJobForm(); UpdateJob(); } }); btnResetJobs.setToolTipText("Reset the form"); btnResetJobs.setEnabled(false); scrollPane_1 = new JScrollPane(); scrollPane_1.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER); scrollPane_1.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER); scrollPane_1.setBorder(null); scrollPane_1.setBounds(522, 44, 245, 405); pnlJob.add(scrollPane_1); panel_7 = new JPanel(); panel_7.setToolTipText("Select a job to edit options, re-order, or delete"); scrollPane_1.setViewportView(panel_7); panel_7.setBackground(Color.WHITE); panel_7.setBorder(new SoftBevelBorder(BevelBorder.LOWERED, Color.LIGHT_GRAY, null, null, null)); panel_7.setLayout(new BorderLayout(0, 0)); listJobs = new JList(jobModel); listJobs.setSelectionModel(listJobsAvail.getSelectionModel()); panel_7.add(listJobs, BorderLayout.NORTH); listJobs.setToolTipText("Select a job to edit options, re-order, or delete"); listJobs.addListSelectionListener(new JobListSelectionListener()); listJobs.setBorder(null); listJobs.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); listJobs.setCellRenderer(new JobListRenderer()); pnlJob.setFocusTraversalPolicy(new FocusTraversalOnArray( new Component[] { cmbMaterials, txtThickness, txtDensity, cmbUnwindCore, txtUnwindAmount, txtSlits, txtSlitWidth, cmbRewindCore, txtRewindAmount, cmbJobDomain, lblPresets, lblThickness_1, lblDensity_1, pnlMaterials, lblWebWidthmm, lblmm0, lblUnwindCoremm, lblmm1, lblUnwindLength, pnlUnwinds, lblmicro0, lblgm3, label_3, pnlJobs, lblTargetRewindLength, lblSlitWidth, lblSlitCount, lblTrimtotal, lblTrim, lblRewindCoremm, lblPer_1, lblmm3, lblmm2 })); Image img = null; try { img = ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/refresh.png")); } catch (IOException e1) { e1.printStackTrace(); } BufferedImage bi = new BufferedImage(img.getWidth(null), img.getHeight(null), BufferedImage.TYPE_INT_ARGB); Graphics g = bi.createGraphics(); g.drawImage(img, 0, 0, 25, 25, null); LoadSettings(); DoLicenceCheck(); initialising = false; }