package art.servers.colorsserver.M.gui.diagrams; import art.library.model.devices.colors.controller.M.M_ControllerConfiguration; import art.library.model.devices.colors.controller.M.M_SubcontrollerConfiguration; import art.library.model.devices.colors.controller.M.configuration.M_TimeTable; import art.library.gui.flat.FlatPanel; import art.library.gui.flat.schedule.PanelSchedule; import art.library.gui.flat.schedule.ScheduleTask; import art.servers.Shared; import java.awt.BorderLayout; import java.awt.Color; import java.text.DecimalFormat; import java.util.ArrayList; import java.util.Calendar; public class DiagramTimetable extends PanelConfigurationGeneric { private M_ControllerConfiguration m_controllerConfiguration = null; private M_SubcontrollerConfiguration m_subcontrollerConfiguration = null; private PanelSchedule panelSchedule = null; public DiagramTimetable(M_ControllerConfiguration m_controllerConfiguration, M_SubcontrollerConfiguration m_subcontrollerConfiguration) { this.m_controllerConfiguration = m_controllerConfiguration; this.m_subcontrollerConfiguration = m_subcontrollerConfiguration; initialise(); reload(); } public void editable(boolean value) { super.editable(value); grants(); reload(); } public void reload() { grants(); ArrayList lTask = new ArrayList(); if (m_subcontrollerConfiguration.ltimetable != null) { if (m_subcontrollerConfiguration.ltimetable.size() > 0) { ScheduleTask firsTask = new ScheduleTask(m_subcontrollerConfiguration.ltimetable.get(0).timestampStart, m_subcontrollerConfiguration.ltimetable.get(0).timestampEnd); if ((firsTask.calendarBegin.get(Calendar.DAY_OF_WEEK) != Calendar.MONDAY) || (firsTask.calendarBegin.get(Calendar.HOUR_OF_DAY) != 0) || (firsTask.calendarBegin.get(Calendar.MINUTE) != 0)) { // La primera no es Lunes a las 00:00 int last = m_subcontrollerConfiguration.ltimetable.size()-1; M_TimeTable lastTimetable = m_subcontrollerConfiguration.ltimetable.get(last); M_TimeTable newfirsttimeTable = new M_TimeTable(); newfirsttimeTable.operationMode = lastTimetable.operationMode; newfirsttimeTable.plan = lastTimetable.plan; newfirsttimeTable.redOutput = lastTimetable.redOutput; newfirsttimeTable.yellowOutput = lastTimetable.yellowOutput; newfirsttimeTable.greenOutput = lastTimetable.greenOutput; Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.YEAR, 2000); calendar.set(Calendar.DATE, 1); calendar.set(Calendar.MONTH, 4); calendar.set(Calendar.HOUR_OF_DAY, 0); calendar.set(Calendar.MINUTE, 0); calendar.set(Calendar.SECOND, 0); calendar.set(Calendar.MILLISECOND, 0); newfirsttimeTable.timestampStart = calendar.getTimeInMillis(); if (last == 0) { newfirsttimeTable.timestampEnd = lastTimetable.timestampStart; } else { newfirsttimeTable.timestampEnd = m_subcontrollerConfiguration.ltimetable.get(0).timestampStart; } m_subcontrollerConfiguration.ltimetable.add(0, newfirsttimeTable); } } for (M_TimeTable timetable : m_subcontrollerConfiguration.ltimetable) { ScheduleTask task = new ScheduleTask(timetable.timestampStart, timetable.timestampEnd); task.object = timetable; task.name = Shared.getMessage("mnemonic-Plan") + timetable.plan; switch (timetable.operationMode) { case M_TimeTable.OPERATION_MODE_FIXED : task.name = task.name + Shared.getMessage("mnemonic-Fixed"); task.color = Color.green; break; case M_TimeTable.OPERATION_MODE_SEMIACTUATED : task.name = task.name + Shared.getMessage("mnemonic-Semiactuated"); task.color = Color.green; break; case M_TimeTable.OPERATION_MODE_ACTUATED : task.name = task.name + Shared.getMessage("mnemonic-Actuated"); task.color = Color.green; break; case M_TimeTable.OPERATION_MODE_FLASHINGYELLOW : task.name = Shared.getMessage("Y^"); task.color = Color.yellow; break; case M_TimeTable.OPERATION_MODE_DIRECTGROUP : task.name = Shared.getMessage("mnemonic-Group"); task.color = Color.orange; break; case M_TimeTable.OPERATION_MODE_NONE : task.name = Shared.getMessage("?"); task.color = Color.gray; break; } task.description = task.name; task.setTimestamps(timetable.timestampStart, timetable.timestampEnd); lTask.add(task); } } panelSchedule.setScheduleTask(lTask); panelSchedule.revalidate(); repaint(); } private void initialise() { FlatPanel panel1 = new FlatPanel(); { panelSchedule = new PanelSchedule(PanelSchedule.TYPE_GENERAL_WEEK, 5); panelSchedule.setEditable(false); Calendar calendar1 = Calendar.getInstance(); calendar1.setTimeInMillis(0); calendar1.set(Calendar.YEAR, 2000); calendar1.set(Calendar.HOUR_OF_DAY, 0); calendar1.set(Calendar.DATE, 1); calendar1.set(Calendar.MONTH, 4); panelSchedule.setTimestamp(calendar1.getTimeInMillis()); panel1.setLayout(new BorderLayout()); panel1.add(panelSchedule, BorderLayout.CENTER); } this.setLayout(new BorderLayout()); this.add(panel1, BorderLayout.CENTER); } }