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<program.trolley.retractables.length; i++)
|
{
|
RTZ32_Configuration_Program_Trolley_Retractable retractable = program.trolley.retractables[i];
|
|
if (retractable.getDuration() > 0)
|
{
|
FlatMenuItemCheck item = new FlatMenuItemCheck();
|
item.setText("<html><body><b>" + (i+1) + "</b> - " + retractable.startTime + " > " + retractable.endTime + "<b></body></html>");
|
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);
|
}
|
}
|
|
}
|