package art.client.GUI.components.devices.window.colors.rtz32.configuration; import art.client.GUI.components.devices.window.DeviceWindow; import art.client.GUI.components.devices.window.colors.junction.configuration.PanelConfigurationGeneric; import art.client.models.ModelGUI; import art.library.model.devices.colors.controller.RTZ32.RTZ32_ControllerConfiguration; import art.library.model.devices.colors.controller.RTZ32.configuration.RTZ32_Configuration_Program; import art.library.gui.flat.FlatButton; import art.library.gui.flat.FlatDialog; import art.library.gui.flat.FlatMenu; import art.library.gui.flat.FlatMenuItem; import art.library.gui.flat.FlatMenuItemCheck; import art.library.gui.flat.FlatPanel; import art.library.gui.flat.FlatPopupMenu; import art.library.gui.flat.FlatWindow; import art.library.interop.InteropParameters; import art.library.interop.InteropResponse; import art.library.interop.serialization.Serialization; import art.library.interop.serialization.SerializationException; import art.library.model.devices.colors.controller.RTZ32.RTZ32_Controller; import art.library.model.devices.colors.controller.RTZ32.configuration.RTZ32_Configuration_Program_Trolley_Retractable; import art.library.model.devices.colors.controller.RTZ32.information.RTZ32_Information_Program; import art.library.utils.resources.Resources; import art.servers.Shared; import art.servers.rtzserver.controller.ListenerImplementation; import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.Point; import java.awt.event.ActionListener; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import java.text.SimpleDateFormat; import java.util.Date; import javax.swing.JOptionPane; import javax.swing.SwingUtilities; import javax.swing.event.PopupMenuEvent; import javax.swing.event.PopupMenuListener; public class RTZ32_PanelConfiguration_Programs_Program extends PanelConfigurationGeneric { private RTZ32_ControllerConfiguration configuration = null; private int programNumber = 0; private FlatPanel panel1 = null; private FlatButton buttonOptions = null; private FlatButton buttonPrint = null; private RTZ32_PanelConfiguration_Programs_Program_Distribution panelConfiguration_Programs_Program_Distribution = null; public RTZ32_PanelConfiguration_Programs_Program(RTZ32_ControllerConfiguration configuration, int programNumber) { this.configuration = configuration; this.programNumber = programNumber; this.setDoubleBuffered(true); initialise(); } public RTZ32_Configuration_Program getProgram() { return configuration.rtz32.getProgram(programNumber); } public void editable(boolean value) { super.editable(value); grants(); } public void selection() { try { FlatWindow window = (FlatWindow)SwingUtilities.getRoot(this); window.addButtonSeparator(); window.addButtonMenu(buttonOptions); window.addButtonSeparator(); window.addButtonMenu(buttonPrint); } catch (Exception e) { } if (panelConfiguration_Programs_Program_Distribution != null) { panelConfiguration_Programs_Program_Distribution.selection(); panelConfiguration_Programs_Program_Distribution.editable(isEditable()); } reload(); } public void deselection() { try { FlatWindow window = (FlatWindow)SwingUtilities.getRoot(this); window.removeComponentMenu(buttonOptions); window.removeComponentMenu(buttonPrint); } catch (Exception e) { } if (panelConfiguration_Programs_Program_Distribution != null) panelConfiguration_Programs_Program_Distribution.deselection(); } public void grants() { // TODO: check user permissions if (panelConfiguration_Programs_Program_Distribution != null) panelConfiguration_Programs_Program_Distribution.editable(isEditable()); } public void reload() { RTZ32_Configuration_Program program = configuration.rtz32.getProgram(programNumber); for (RTZ32_Configuration_Program_Trolley_Retractable retractable : program.trolley.retractables) { retractable.visible = true; } if (panel1.getComponentCount() == 0) { panelConfiguration_Programs_Program_Distribution = new RTZ32_PanelConfiguration_Programs_Program_Distribution(configuration, programNumber); panel1.removeAll(); panel1.add(panelConfiguration_Programs_Program_Distribution, BorderLayout.CENTER); } else { panelConfiguration_Programs_Program_Distribution = (RTZ32_PanelConfiguration_Programs_Program_Distribution)panel1.getComponent(0); panelConfiguration_Programs_Program_Distribution.reevaluate(); } } private void initialise() { buttonOptions = new FlatButton(Shared.getMessage("&Options")); buttonOptions.setIcon(Resources.getResourceURL(ModelGUI.Icons.SETTINGS_24x24)); buttonOptions.setPreferredSize(new Dimension(buttonOptions.getStringWidth(), 0)); buttonOptions.setVisible(true); buttonOptions.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { options(); } }); buttonPrint = new FlatButton(Shared.getMessage("&Print")); buttonPrint.setIcon(Resources.getResourceURL(ModelGUI.Icons.PRINT_24x24)); buttonPrint.setPreferredSize(new Dimension(buttonPrint.getStringWidth(), 0)); buttonPrint.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { // TODO } }); panel1 = new FlatPanel(); { panel1.setLayout(new BorderLayout()); } this.setLayout(new BorderLayout()); this.add(panel1, BorderLayout.CENTER); } private void options() { RTZ32_Configuration_Program program = configuration.rtz32.getProgram(programNumber); try { FlatPopupMenu menu = new FlatPopupMenu(); FlatMenuItemCheck item1 = new FlatMenuItemCheck(); { item1.setText(Shared.getMessage("Show &information")); item1.setStayOpen(true); item1.setSelected(panelConfiguration_Programs_Program_Distribution.diagram_Distribution.diagram_Distribution_Bars.information); item1.addItemListener(new ItemListener() { public void itemStateChanged(ItemEvent e) { FlatMenuItemCheck item = (FlatMenuItemCheck)e.getSource(); panelConfiguration_Programs_Program_Distribution.diagram_Distribution.diagram_Distribution_Bars.information = item.isSelected(); } }); menu.add(item1); } FlatMenu menu1 = new FlatMenu(); { menu1.setText(Shared.getMessage("Show &retractables")); for (int i=0; i 0) { FlatMenuItemCheck item = new FlatMenuItemCheck(); item.setText("" + (i+1) + " - " + retractable.startTime + " > " + retractable.endTime + ""); item.setName("" + i); item.setStayOpen(true); item.setSelected(program.trolley.retractables[i].visible); menu1.add(item); item.addItemListener(new ItemListener() { public void itemStateChanged(ItemEvent e) { FlatMenuItemCheck item = (FlatMenuItemCheck)e.getSource(); item.setSelected(item.isSelected()); program.trolley.retractables[Integer.parseInt(item.getName())].visible = item.isSelected(); panelConfiguration_Programs_Program_Distribution.reevaluate(); RTZ32_PanelConfiguration_Programs_Program.this.repaint(); } }); } } menu.add(menu1); } // TODO : Alex, grants { FlatMenu menu4 = new FlatMenu(); { for (int i=0; i<18; i++) { FlatMenuItem item = new FlatMenuItem(); item.setName("" + (i+1)); item.setText(Shared.getMessage("Program") + " " + (i+1)); item.setStayOpen(false); item.addActionListener(new ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { try { FlatMenuItem item = (FlatMenuItem)evt.getSource(); Integer program = Integer.parseInt(item.getName()); copyTo(program); } catch (Exception exception) { } } }); menu4.add(item); } menu4.setText("&Copy to"); menu.add(menu4); } } FlatWindow window = (FlatWindow)SwingUtilities.getRoot(this); Point p = SwingUtilities.convertPoint(buttonOptions, 0, buttonOptions.getY(), window); menu.addPopupMenuListener(new PopupMenuListener() { @Override public void popupMenuWillBecomeVisible(PopupMenuEvent e) { } @Override public void popupMenuWillBecomeInvisible(PopupMenuEvent e) { window.repaint(); } @Override public void popupMenuCanceled(PopupMenuEvent e) { window.repaint(); } }); menu.show(window, p.x, p.y + buttonOptions.getHeight() - 4); } catch (Exception exception) { } } private void copyTo (int programNumber) { // TODO : Cambiar por invokes (listenerImplementation.xxxxxx) SimpleDateFormat formato1 = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss"); DeviceWindow window = (DeviceWindow)SwingUtilities.getRoot(RTZ32_PanelConfiguration_Programs_Program.this); RTZ32_Controller rtz32 = (RTZ32_Controller)window.getDevice(); try { // Comprobar si existe ListenerImplementation listenerImplementation = (art.servers.rtzserver.controller.ListenerImplementation)art.servers.rtzserver.Shared.controllerListenerHttps.getListenerImplementation(); InteropParameters parameters = new InteropParameters(); parameters.addParameter("device", rtz32.getIdentifier()); parameters.addParameter("program", "" + programNumber); InteropResponse response = listenerImplementation.getProgram(parameters); if ((response.getValue() == null) || (response.getResponse() == null)) { // Not exists // No questions to user } else { // Exists RTZ32_Information_Program program = (RTZ32_Information_Program)response.getValue()[0]; String message = Shared.getMessage("This program has already a working copy") + "\r\n\r\n"; message = message + Shared.getMessage("Date") + " : " + formato1.format(program.creation) + "\r\n"; if (program.description != null) { message = message + Shared.getMessage("Description") + " : " + program.description + "\r\n"; } else { message = message + Shared.getMessage("Description") + " : " + "\r\n"; } if (program.validated == true) { message = message + Shared.getMessage("Validated") + " : " + Shared.getMessage("Yes") + "\r\n"; } else { message = message + Shared.getMessage("Validated") + " : " + Shared.getMessage("No") + "\r\n"; } message = message + Shared.getMessage("Username") + " : " + program.username + "\r\n\r\n"; message = message + Shared.getMessage("Do you really want to overwrite?"); int answer = FlatDialog.showDialog(window, Shared.getMessage("Copying"), message, true, FlatDialog.DIALOG_QUESTION); if (answer != JOptionPane.YES_OPTION) { return; } } // Copiar y guardar RTZ32_Configuration_Program program = configuration.rtz32.getProgram(programNumber); RTZ32_Information_Program programInformation = new RTZ32_Information_Program(); programInformation.device = rtz32.getIdentifier(); programInformation.program = programNumber; programInformation.username = "" ; // TODO: must be session username programInformation.creation = new Date(); programInformation.configuration = Serialization.clone(configuration); programInformation.configuration.rtz32.programs[programNumber-1] = programInformation.configuration.rtz32.programs[this.programNumber-1]; programInformation.configuration.rtz32.programs[programNumber-1].number = programNumber; parameters = new InteropParameters(); parameters.addBodycontent(programInformation); response = listenerImplementation.addProgram(parameters); if ((Boolean)response.getResponse() == true) { FlatDialog.showDialog(window, Shared.getMessage("Information"), Shared.getMessage("Program copied succesfully"), true, FlatDialog.DIALOG_INFORMATION); } else { FlatDialog.showDialog(window, Shared.getMessage("Error"), Shared.getMessage("Unespected error while copying"), true, FlatDialog.DIALOG_ERROR); } } catch (SerializationException exception) { FlatDialog.showDialog(window, Shared.getMessage("Error"), exception.getMessage(), true, FlatDialog.DIALOG_ERROR); } catch (Exception exception) { FlatDialog.showDialog(window, Shared.getMessage("Error"), exception.getMessage(), true, FlatDialog.DIALOG_ERROR); } } }