class Table_and_Plots_Panel(JPanel): def __init__(self,scl_long_tuneup_controller): self.scl_long_tuneup_controller = scl_long_tuneup_controller self.setLayout(BorderLayout()) #----etched border etched_border = BorderFactory.createEtchedBorder() titled_border = BorderFactory.createTitledBorder(etched_border,"BPM Table and Plots") self.setBorder(titled_border) #---------------------------------------- self.bpm_table = JTable(Energy_Meter_BPMs_Table_Model(self.scl_long_tuneup_controller)) self.bpm_table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION) self.bpm_table.setFillsViewportHeight(true) self.bpm_table.setPreferredScrollableViewportSize(Dimension(400,300)) scrl_panel = JScrollPane(self.bpm_table) scrl_panel.setBorder(etched_border) bpm_table_panel = JPanel(BorderLayout()) bpm_table_panel.add(scrl_panel,BorderLayout.WEST) #----------------------------------------- self.gp_bpm_phase_err = FunctionGraphsJPanel() self.gp_bpm_phase_err.setLegendButtonVisible(true) self.gp_bpm_phase_err.setChooseModeButtonVisible(true) self.gp_bpm_phase_err.setName("BPM Phase Errors") self.gp_bpm_phase_err.setAxisNames("position, [m]","BPM Phase Error, [deg]") self.gp_bpm_phase_err.setBorder(etched_border) bpm_graph_panel = JPanel(BorderLayout()) bpm_graph_panel.add(self.gp_bpm_phase_err) #------graph data self.bpm_phase_err_gd = BasicGraphData() self.bpm_phase_err_gd.setGraphPointSize(8) self.bpm_phase_err_gd.setDrawLinesOn(false) self.bpm_phase_err_gd.setGraphColor(Color.BLUE) self.gp_bpm_phase_err.addGraphData(self.bpm_phase_err_gd) #----------------------------------------- self.add(bpm_table_panel,BorderLayout.WEST) self.add(bpm_graph_panel,BorderLayout.CENTER)
class QuadCavDictSelection_Panel (JPanel): def __init__(self,transverse_twiss_analysis_Controller): self.transverse_twiss_analysis_Controller = transverse_twiss_analysis_Controller self.setLayout(BorderLayout()) #-----------dict table panel etched_border = BorderFactory.createEtchedBorder() border = BorderFactory.createTitledBorder(etched_border,"Quad and Cavities Amp.&Phases Sets") self.setBorder(border) self.quad_cav_dict_table_model = QuadCavDict_Table_Model(self.transverse_twiss_analysis_Controller.accStatesKeeper) self.dict_table = JTable(self.quad_cav_dict_table_model) self.dict_table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION) self.dict_table.setFillsViewportHeight(true) self.dict_table.setPreferredScrollableViewportSize(Dimension(120,100)) self.dict_table.getSelectionModel().addListSelectionListener(QuadCavDict_Table_Selection_Listener(self.transverse_twiss_analysis_Controller)) #--------buttons panel button_panel = JPanel(BorderLayout()) self.gaussButton = JRadioButton("Use Ext. Gauss Fit") self.custom_gaussButton = JRadioButton("Use Gauss Fit") self.custom_rmsButton = JRadioButton("Use RMS") button_group = ButtonGroup() button_group.add(self.gaussButton) button_group.add(self.custom_gaussButton) button_group.add(self.custom_rmsButton) button_group.clearSelection() self.gaussButton.setSelected(true) button_panel0 = JPanel(FlowLayout(FlowLayout.LEFT,2,2)) button_panel0.add(self.gaussButton) button_panel1 = JPanel(FlowLayout(FlowLayout.LEFT,2,2)) button_panel1.add(self.custom_gaussButton) button_panel2 = JPanel(FlowLayout(FlowLayout.LEFT,2,2)) button_panel2.add(self.custom_rmsButton) button_panel012 = JPanel(GridLayout(3,1)) button_panel012.add(button_panel0) button_panel012.add(button_panel1) button_panel012.add(button_panel2) #-------new buttons----- button_bottom_panel = JPanel(FlowLayout(FlowLayout.LEFT,2,2)) button_bottom_panel0 = JPanel(GridLayout(3,1,2,2)) dump_quad_fields_button = JButton("Dump Quad Fields to ASCII") dump_quad_fields_button.addActionListener(Dump_Quad_Fields_Button_Listener(self.transverse_twiss_analysis_Controller)) button_bottom_panel0.add(dump_quad_fields_button) dump_cav_amps_phases_button = JButton("Dump. Cav Amps. Phases to ASCII") dump_cav_amps_phases_button.addActionListener(Dump_Cav_Amps_Phases_Button_Listener(self.transverse_twiss_analysis_Controller)) button_bottom_panel0.add(dump_cav_amps_phases_button) read_cav_amps_phases_button = JButton("Read Cav Amps. Phases from ASCII") read_cav_amps_phases_button.addActionListener(Read_Cav_Amps_Phases_Button_Listener(self.transverse_twiss_analysis_Controller)) button_bottom_panel0.add(read_cav_amps_phases_button) button_bottom_panel.add(button_bottom_panel0) #----- final knobs panel button_panel.add(button_panel012,BorderLayout.NORTH) button_panel.add(button_bottom_panel,BorderLayout.SOUTH) self.gaussButton.addActionListener(FitParam_Buttons_Listener(self.transverse_twiss_analysis_Controller,0)) self.custom_gaussButton.addActionListener(FitParam_Buttons_Listener(self.transverse_twiss_analysis_Controller,1)) self.custom_rmsButton.addActionListener(FitParam_Buttons_Listener(self.transverse_twiss_analysis_Controller,2)) #---------------------------------------------------------- self.add(JScrollPane(self.dict_table), BorderLayout.WEST) self.add(button_panel, BorderLayout.CENTER) def getMainPanel(self): return self
class SCL_Long_TuneUp_PhaseScan_Controller: def __init__(self,scl_long_tuneup_controller): #--- scl_long_tuneup_controller the parent document for all SCL tune up controllers self.scl_long_tuneup_controller = scl_long_tuneup_controller self.main_panel = JPanel(BorderLayout()) #----etched border etched_border = BorderFactory.createEtchedBorder() #------top params panel----------------------- top_params_panel = JPanel(BorderLayout()) self.set_phase_shift_panel = SetPhaseShiftAndTimeStep_Panel(self.scl_long_tuneup_controller) self.start_stop_scan_panel = StartStopPhaseScan_Panel(self.scl_long_tuneup_controller) top_params_panel.add(self.set_phase_shift_panel,BorderLayout.NORTH) top_params_panel.add(self.start_stop_scan_panel,BorderLayout.SOUTH) #------cavities scan table panel -------- cavs_scan_panel = JPanel(BorderLayout()) self.cavs_table = JTable(Cavs_PhaseScan_Table_Model(self.scl_long_tuneup_controller)) self.cavs_table.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION) self.cavs_table.setFillsViewportHeight(true) self.cavs_table.getSelectionModel().addListSelectionListener(Cavs_Table_Selection_Listener(self.scl_long_tuneup_controller)) self.bpms_table_model = PhaseScan_BPMs_Table_Model(self.scl_long_tuneup_controller) self.bpms_table = JTable(self.bpms_table_model) self.bpms_table.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION) self.bpms_table.setFillsViewportHeight(true) self.bpms_table.getSelectionModel().addListSelectionListener(BPMs_Table_Selection_Listener(self.scl_long_tuneup_controller)) self.bpms_table.setPreferredScrollableViewportSize(Dimension(200,300)) scrl_panel0 = JScrollPane(self.cavs_table) scrl_panel0.setBorder(etched_border) scrl_panel1 = JScrollPane(self.bpms_table) self.bpm_table_border = BorderFactory.createTitledBorder(etched_border,"Cavity") scrl_panel1.setBorder(self.bpm_table_border) cavs_scan_panel.add(scrl_panel0,BorderLayout.CENTER) cavs_scan_panel.add(scrl_panel1,BorderLayout.EAST) self.bpm_table_panel = scrl_panel1 #---------- graph panels -------------------------- self.bpm_phaseDiff_graph_panel = BPM_PhaseDiff_Graph_Panel(self.scl_long_tuneup_controller) self.bpm_phase_and_amp_graph_panel = BPMs_Amp_Phase_Graphs_Panel(self.scl_long_tuneup_controller) grap_panel = JPanel(GridLayout(1,2)) grap_panel.add(self.bpm_phaseDiff_graph_panel) grap_panel.add(self.bpm_phase_and_amp_graph_panel) #--------center panel = graphs + tables------------- center_panel = JPanel(GridLayout(2,1)) center_panel.add(cavs_scan_panel) center_panel.add(grap_panel) #-------- post-scan filtering panel bottom_panel = JPanel(BorderLayout()) self.post_scan_panel = PostPhaseScanActions_Panel(self.scl_long_tuneup_controller) bottom_panel.add(self.post_scan_panel,BorderLayout.WEST) #-------------------------------------------------- self.main_panel.add(top_params_panel,BorderLayout.NORTH) self.main_panel.add(bottom_panel,BorderLayout.SOUTH) self.main_panel.add(center_panel,BorderLayout.CENTER) #------scan state self.scan_state_controller = ScanStateController() def getMainPanel(self): return self.main_panel
class RF_NET_Power_Controller: def __init__(self, top_document, main_loop_controller): #--- top_document is a parent document for all controllers self.top_document = top_document self.main_loop_controller = main_loop_controller self.main_panel = JPanel(BorderLayout()) #----etched border etched_border = BorderFactory.createEtchedBorder() #---------------------------------------------- left_panel = JPanel(BorderLayout()) self.rf_power_table = JTable(RF_Power_Table_Model(self)) self.rf_power_table.setSelectionMode( ListSelectionModel.SINGLE_INTERVAL_SELECTION) self.rf_power_table.setFillsViewportHeight(true) self.rf_power_table.setPreferredScrollableViewportSize( Dimension(800, 240)) scrl_rf_power_panel = JScrollPane(self.rf_power_table) scrl_rf_power_panel.setBorder( BorderFactory.createTitledBorder(etched_border, "RF Net Power")) self.init_buttons_panel = Init_RF_Power_Controller_Panel(self) self.start_stop_panel = Start_Stop_Panel(self) tmp0_panel = JPanel(BorderLayout()) tmp0_panel.add(self.init_buttons_panel, BorderLayout.NORTH) tmp0_panel.add(scrl_rf_power_panel, BorderLayout.CENTER) tmp0_panel.add(self.start_stop_panel, BorderLayout.SOUTH) tmp1_panel = JPanel(BorderLayout()) tmp1_panel.add(tmp0_panel, BorderLayout.NORTH) left_panel.add(tmp1_panel, BorderLayout.WEST) #-------------------------------------------------------- self.main_panel.add(left_panel, BorderLayout.WEST) #---- non GUI controllers self.loop_run_state = Loop_Run_State() def getMainPanel(self): return self.main_panel def getMessageTextField(self): return self.top_document.getMessageTextField() def writeDataToXML(self, root_da): rf_power_cntrl_da = root_da.createChild("RF_NET_POWER") def readDataFromXML(self, root_da): rf_power_cntrl_da = root_da.childAdaptor("MAIN_CONTROLLER")
class Transverse_Twiss_Fitting_Controller: def __init__(self, linac_wizard_document): #--- linac_wizard_document the parent document for all controllers self.linac_wizard_document = linac_wizard_document #-------------------------------------------------------------- self.main_panel = JPanel(BorderLayout()) #------------------------------------------------------------- #----etched border etched_border = BorderFactory.createEtchedBorder() #------------------------------------------------------------- self.initial_twiss_params_holder = Twiss_Params_Holder() self.initTwiss_table = JTable( Init_Twiss_Table_Model(self.initial_twiss_params_holder)) self.initTwiss_table.setSelectionMode( ListSelectionModel.SINGLE_SELECTION) self.initTwiss_table.setFillsViewportHeight(true) self.initTwiss_table.setPreferredScrollableViewportSize( Dimension(240, 160)) initTwiss_panel = JPanel(BorderLayout()) initTwiss_panel.add(JScrollPane(self.initTwiss_table), BorderLayout.CENTER) initTwiss_knobs_panel = JPanel(FlowLayout(FlowLayout.CENTER, 5, 5)) initTwiss_button = JButton("Init Twiss from Design") initTwiss_button.addActionListener(Init_Twiss_Button_Listener(self)) initTwiss_knobs_panel.add(initTwiss_button) initTwiss_panel.add(initTwiss_knobs_panel, BorderLayout.SOUTH) border = BorderFactory.createTitledBorder(etched_border, "Initial Twiss Parameters") initTwiss_panel.setBorder(border) #--------Init_and_Fit_Params_Controller panel ---------- self.init_and_fit_params_controller = Init_and_Fit_Params_Controller( self.linac_wizard_document, self) #Twiss fitter is defined in the transverse_twiss_fitter_lib.py self.twiss_fitter = null #----add panels to the main tmp_panel = JPanel(BorderLayout()) tmp_panel.add(initTwiss_panel, BorderLayout.WEST) tmp_panel.add(self.init_and_fit_params_controller.getMainPanel(), BorderLayout.EAST) self.main_panel.add(tmp_panel, BorderLayout.WEST) def getMainPanel(self): return self.main_panel
class RF_NET_Power_Controller: def __init__(self,top_document,main_loop_controller): #--- top_document is a parent document for all controllers self.top_document = top_document self.main_loop_controller = main_loop_controller self.main_panel = JPanel(BorderLayout()) #----etched border etched_border = BorderFactory.createEtchedBorder() #---------------------------------------------- left_panel = JPanel(BorderLayout()) self.rf_power_table = JTable(RF_Power_Table_Model(self)) self.rf_power_table.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION) self.rf_power_table.setFillsViewportHeight(true) self.rf_power_table.setPreferredScrollableViewportSize(Dimension(800,240)) scrl_rf_power_panel = JScrollPane(self.rf_power_table) scrl_rf_power_panel.setBorder(BorderFactory.createTitledBorder(etched_border,"RF Net Power")) self.init_buttons_panel = Init_RF_Power_Controller_Panel(self) self.start_stop_panel = Start_Stop_Panel(self) tmp0_panel = JPanel(BorderLayout()) tmp0_panel.add(self.init_buttons_panel,BorderLayout.NORTH) tmp0_panel.add(scrl_rf_power_panel,BorderLayout.CENTER) tmp0_panel.add(self.start_stop_panel,BorderLayout.SOUTH) tmp1_panel = JPanel(BorderLayout()) tmp1_panel.add(tmp0_panel,BorderLayout.NORTH) left_panel.add(tmp1_panel,BorderLayout.WEST) #-------------------------------------------------------- self.main_panel.add(left_panel,BorderLayout.WEST) #---- non GUI controllers self.loop_run_state = Loop_Run_State() def getMainPanel(self): return self.main_panel def getMessageTextField(self): return self.top_document.getMessageTextField() def writeDataToXML(self,root_da): rf_power_cntrl_da = root_da.createChild("RF_NET_POWER") def readDataFromXML(self,root_da): rf_power_cntrl_da = root_da.childAdaptor("MAIN_CONTROLLER")
class Transverse_Twiss_Fitting_Controller: def __init__(self,linac_wizard_document): #--- linac_wizard_document the parent document for all controllers self.linac_wizard_document = linac_wizard_document #-------------------------------------------------------------- self.main_panel = JPanel(BorderLayout()) #------------------------------------------------------------- #----etched border etched_border = BorderFactory.createEtchedBorder() #------------------------------------------------------------- self.initial_twiss_params_holder = Twiss_Params_Holder() self.initTwiss_table = JTable(Init_Twiss_Table_Model(self.initial_twiss_params_holder)) self.initTwiss_table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION) self.initTwiss_table.setFillsViewportHeight(true) self.initTwiss_table.setPreferredScrollableViewportSize(Dimension(240,160)) initTwiss_panel = JPanel(BorderLayout()) initTwiss_panel.add(JScrollPane(self.initTwiss_table), BorderLayout.CENTER) initTwiss_knobs_panel = JPanel(FlowLayout(FlowLayout.CENTER,5,5)) initTwiss_button = JButton("Init Twiss from Design") initTwiss_button.addActionListener(Init_Twiss_Button_Listener(self)) initTwiss_knobs_panel.add(initTwiss_button) initTwiss_panel.add(initTwiss_knobs_panel, BorderLayout.SOUTH) border = BorderFactory.createTitledBorder(etched_border,"Initial Twiss Parameters") initTwiss_panel.setBorder(border) #--------Init_and_Fit_Params_Controller panel ---------- self.init_and_fit_params_controller = Init_and_Fit_Params_Controller(self.linac_wizard_document,self) #Twiss fitter is defined in the transverse_twiss_fitter_lib.py self.twiss_fitter = null #----add panels to the main tmp_panel = JPanel(BorderLayout()) tmp_panel.add(initTwiss_panel, BorderLayout.WEST) tmp_panel.add(self.init_and_fit_params_controller.getMainPanel(),BorderLayout.EAST) self.main_panel.add(tmp_panel, BorderLayout.WEST) def getMainPanel(self): return self.main_panel
class SessionRequestTab(IMessageEditorTab): """UI of the extension.""" def refresh_sessions(self): self._session_selector.setModel(DefaultComboBoxModel(self._extender.sm.sessions)) self._session_selector.setSelectedItem(self._extender.sm.selected_session) def deleteSession(self, evt): """Listener for the Delete Session button.""" if JOptionPane.showConfirmDialog(None, "Are you sure?", "", JOptionPane.YES_NO_OPTION) == JOptionPane.OK_OPTION: self._extender.sm.remove_session() self.refresh_sessions() self.update_table() self.parse_message() @attach_stack_trace def new_session(self, evt): """Listener for New Session button.""" name = JOptionPane.showInputDialog(None, "Name the new session:", "Session name") if name != None: from_request = JOptionPane.showConfirmDialog(None, "Create session from current request?", "From current request?", JOptionPane.YES_NO_OPTION) self._extender.sm.new_session(name) self.refresh_sessions() # let user select parameters for new session if from_request == JOptionPane.OK_OPTION: dialog = SessionFromRequestDialog(self) dialog.setVisible(True) def changeSession(self, evt): """Listener for session combobox""" if evt.getStateChange() == 1: session = evt.getItem() self._extender.sm.selected_session = session self.update_table() self.parse_message() @attach_stack_trace def update_table(self): """Updates the table with new data""" columns = ["Type", "Action", "Name", "Value"] data = [] for param in self._extender.sm.selected_session.params: data.append(param.as_table_row()) data.append([Parameter.type_mapping[Parameter.PARAM_COOKIE], Parameter.ACTION_MODIFY, "", ""]) data_model = DefaultTableModel(data, columns, tableChanged=self.tableChanged) self.modification_table.setModel(data_model) # type combobox type_combo = JComboBox(self._types) type_column = self.modification_table.getColumnModel().getColumn(0) type_column.setCellEditor(DefaultCellEditor(type_combo)) type_column.setMaxWidth(75) # action combobox action_combo = JComboBox(self._actions) action_column = self.modification_table.getColumnModel().getColumn(1) action_column.setCellEditor(DefaultCellEditor(action_combo)) action_column.setMaxWidth(75) action_combo.setSelectedItem("replace") @attach_stack_trace def tableChanged(self, evt): """Handles changes to table cells, i.e. Parameter changes.""" if evt.getType() == 0: # UPDATING a cell table_model = evt.getSource() row = evt.getFirstRow() col = evt.getColumn() # Removing a row was selected if col == 0 and "Remove Row" in table_model.getValueAt(row, col) and table_model.getRowCount() > 1: table_model.removeRow(row) # update the model session = self._extender.sm.selected_session session.reset() for r in range(table_model.getRowCount() - 1): type = str(table_model.getValueAt(r, 0)) action = str(table_model.getValueAt(r, 1)) name = table_model.getValueAt(r, 2) value = table_model.getValueAt(r, 3) if type != None and name != None and value != None: param = Parameter(type, action, name, self._extender.helpers.urlDecode(value)) session.modify(param) # Check if there is an empty last row has_empty_row = True for i in range(2, 4): val = table_model.getValueAt(table_model.getRowCount() - 1, i) if val != None and val != "": has_empty_row = False break # no empty last row, add one if not has_empty_row: table_model.addRow(["", Parameter.ACTION_MODIFY, "", ""]) # update message editor self.parse_message() def parse_message(self): self._editor.setText(self._extender.process_request(self._extender.HTTP)) def getTabCaption(self): return "Session" def getUiComponent(self): return self._panel def isEnabled(self, content, isRequest): return isRequest def setMessage(self, content, isRequest): self._extender.HTTP = self._extender.helpers.bytesToString(content) self._editor.setText(content) self.refresh_sessions() self.update_table() def getMessage(self): return self._editor.getText() def isModified(self): return self._editor.isTextModified() def getSelectedData(self): return self._editor.getSelectedText() @attach_stack_trace def __init__(self, extender, controller, editable): self._extender = extender self._panel = JPanel() # main panel # type combobox for tables self._types = Parameter.type_mapping.values() + ["- Remove Row -"] self._actions = ["replace", "insert", "delete"] # define the GridBagLayout ( 4x4 ) gridBagLayout = GridBagLayout() gridBagLayout.columnWidths = [ 0, 0, 0, 0] gridBagLayout.rowHeights = [0, 0, 0, 0] gridBagLayout.columnWeights = [1.0, 0.0, 0.0, 0.0] gridBagLayout.rowWeights = [0.0, 1.0, 5.0, 0.0] self._panel.setLayout(gridBagLayout) # JComboBox for Session selection self._session_selector = JComboBox(extender.sm.sessions, itemStateChanged=self.changeSession) self._session_selector_model = self._session_selector.getModel() gbc_session_selector = _new_grid_bag(0, 0) self._panel.add(self._session_selector, gbc_session_selector) # "Delete Session" Button del_session = JButton("Delete Session", actionPerformed=self.deleteSession) gbc_del_session = _new_grid_bag(1, 0) self._panel.add(del_session, gbc_del_session) # "New Session" Button new_session = JButton("New Session", actionPerformed=self.new_session) gbc_new_session = _new_grid_bag(2, 0) self._panel.add(new_session, gbc_new_session) # Table containing modified parameters self.modification_table = JTable() self.update_table() gbc_modification_table = _new_grid_bag(0, 1, 3) self._panel.add(JScrollPane(self.modification_table), gbc_modification_table) self.modification_table.setPreferredScrollableViewportSize(self.modification_table.getPreferredSize()); self.modification_table.setFillsViewportHeight(True) # HTTP message editor self._editor = self._extender.callbacks.createTextEditor() gbc_messageEditor = _new_grid_bag(0, 2, 3) self._panel.add(self._editor.getComponent(), gbc_messageEditor)
class Main_Loop_Controller: def __init__(self,top_document,accl): #--- top_document is a parent document for all controllers self.top_document = top_document self.main_panel = JPanel(BorderLayout()) #----etched border etched_border = BorderFactory.createEtchedBorder() #----main loop timer self.main_loop_timer = Main_Loop_Timer(self) #---- set up accSeq self.accSeq = null seq_names = ["MEBT","DTL1","DTL2","DTL3","DTL4","DTL5","DTL6","CCL1","CCL2","CCL3","CCL4"] lst = ArrayList() for seqName in seq_names: lst.add(accl.getSequence(seqName)) self.accSeq = AcceleratorSeqCombo("SEQUENCE", lst) rf_gaps = self.accSeq.getAllNodesWithQualifier(AndTypeQualifier().and((OrTypeQualifier()).or(RfGap.s_strType))) self.cav_wrappers = [] cavs = [] count = 0 for rf_gap in rf_gaps: cav = rf_gap.getParent() pos = self.accSeq.getPosition(cav) if(cav not in cavs): #print "debug cav=",cav.getId()," count=",count cavs.append(cav) alias = "null" if(count > 3): alias = seq_names[count+1-4] else: alias = seq_names[0]+str(count+1) cav_llrf_name = "null" cav_pwr_pv_name = "nullPwr" if(count <= 3): cav_llrf_name = "MEBT_LLRF:FCM"+str(count+1) cav_pwr_pv_name = "MEBT_LLRF:Cav"+str(count+1)+":NetPwr" if(count > 3 and count < 10): cav_llrf_name = "DTL_LLRF:FCM"+str(count-3) cav_pwr_pv_name = "DTL_LLRF:Cav"+str(count-3)+":NetPwr" if(count > 9): cav_llrf_name = "CCL_LLRF:FCM"+str(count-9) cav_pwr_pv_name = "CCL_LLRF:Cav"+str(count-9)+":NetPwr" amp_pv_name = cav_llrf_name+":CtlAmpSet" phase_pv_name = cav_llrf_name+":CtlPhaseSet" self.cav_wrappers.append(Cavity_Wrapper(cav,pos,alias,amp_pv_name,phase_pv_name,cav_pwr_pv_name)) #print "debug ==================================" #print "debug cav=",cav.getId()," alias=",alias," amp_pv_name=",amp_pv_name," phase_pv_name=",phase_pv_name #print "debug cav_pwr_pv_name=",cav_pwr_pv_name #print "debug cav=",cav.getId()," pos =",pos," L=",cav.getLength() count += 1 #---- BPMs self.bpm_wrappers = [] bpms = self.accSeq.getAllNodesWithQualifier(AndTypeQualifier().and((OrTypeQualifier()).or(BPM.s_strType))) for bpm in bpms: pos = self.accSeq.getPosition(bpm) pos += 0.5*bpm.getBPMBucket().getLength()*bpm.getBPMBucket().getOrientation() bpm_wrapper = BPM_Wrapper(bpm,pos) #print "debug bpm=",bpm_wrapper.alias," pos =",pos self.bpm_wrappers.append(bpm_wrapper) #---- SCL first BPMs and Cavs lst = ArrayList() for seqName in ["SCLMed",]: lst.add(accl.getSequence(seqName)) self.scl_accSeq = AcceleratorSeqCombo("SCL_SEQUENCE", lst) bpms = self.scl_accSeq.getAllNodesWithQualifier((AndTypeQualifier().and((OrTypeQualifier()).or(BPM.s_strType))).andStatus(true)) bpms = bpms[:5] self.scl_bpm_wrappers = [] for bpm in bpms: pos = self.scl_accSeq.getPosition(bpm) + self.accSeq.getLength() pos += 0.5*bpm.getBPMBucket().getLength()*bpm.getBPMBucket().getOrientation() bpm_wrapper = BPM_Wrapper(bpm,pos) #print "debug bpm=",bpm_wrapper.alias," pos =",pos self.scl_bpm_wrappers.append(bpm_wrapper) rf_gaps = self.scl_accSeq.getAllNodesWithQualifier(AndTypeQualifier().and((OrTypeQualifier()).or(RfGap.s_strType))) cavs = [] for rf_gap in rf_gaps: cav = rf_gap.getParent() if((cav not in cavs) and cav.getStatus()): cavs.append(cav) cavs = cavs[:9] self.scl_cav_wrappers = [] for cav in cavs: pos = self.scl_accSeq.getPosition(cav) + self.accSeq.getLength() alias = cav.getId().split(":")[1] amp_pv_name = "SCL_LLRF:"+alias.replace("Cav","FCM")+":CtlAmpSet" phase_pv_name = "SCL_LLRF:"+alias.replace("Cav","FCM")+":CtlPhaseSet" cav_pwr_pv_name = "SCL_LLRF:"+alias+":NetPwr" self.scl_cav_wrappers.append(Cavity_Wrapper(cav,pos,alias,amp_pv_name,phase_pv_name,cav_pwr_pv_name)) #print "debug ==================================" #print "debug cav=",cav.getId()," alias=",alias," amp_pv_name=",amp_pv_name," phase_pv_name=",phase_pv_name #print "debug cav_pwr_pv_name=",cav_pwr_pv_name #---- Panels setup #---- Auxiliaries setup self.loop_run_state = Loop_Run_State() self.loop_run_state.isRunning = false self.loop_run_state.shouldStop = false #--------------------------------------------- #----etched border etched_border = BorderFactory.createEtchedBorder() #---- Cavities' Controllers self.cav_controllers = [] self.cav_controllers.append(MEBT_Cavity_Controller(self,self.cav_wrappers[0])) self.cav_controllers.append(MEBT_Cavity_Controller(self,self.cav_wrappers[1])) self.cav_controllers.append(MEBT_Cavity_Controller(self,self.cav_wrappers[2])) self.cav_controllers.append(MEBT_Cavity_Controller(self,self.cav_wrappers[3])) #--------------------------------- self.cav_controllers.append(DTL1_Cavity_Controller(self,self.cav_wrappers[4])) self.cav_controllers.append(DTL_CCL_Cavity_Controller(self,self.cav_wrappers[5])) self.cav_controllers.append(DTL_CCL_Cavity_Controller(self,self.cav_wrappers[6])) self.cav_controllers.append(DTL_CCL_Cavity_Controller(self,self.cav_wrappers[7])) self.cav_controllers.append(DTL_CCL_Cavity_Controller(self,self.cav_wrappers[8])) self.cav_controllers.append(DTL_CCL_Cavity_Controller(self,self.cav_wrappers[9])) #---------------------------------- self.cav_controllers.append(DTL_CCL_Cavity_Controller(self,self.cav_wrappers[10])) self.cav_controllers.append(DTL_CCL_Cavity_Controller(self,self.cav_wrappers[11])) self.cav_controllers.append(DTL_CCL_Cavity_Controller(self,self.cav_wrappers[12])) self.cav_controllers.append(DTL_CCL_Cavity_Controller(self,self.cav_wrappers[13])) #------ cavity controllers customization -------------------- #------ MEBT Reb. 4 ------- self.cav_controllers[3].cav_amp_backward_steps_mult_text.setValue(8.0) #----- amplitudes limits self.cav_controllers[0].safe_relative_amp_down_text.setValue(50.) self.cav_controllers[1].safe_relative_amp_down_text.setValue(50.) self.cav_controllers[2].safe_relative_amp_down_text.setValue(50.) self.cav_controllers[3].safe_relative_amp_down_text.setValue(50.) #----- No PASTA Use for DTL2-6 and CCL4 self.cav_controllers[5].scan_main_panel.use_PASTA_RadioButton.setSelected(false) self.cav_controllers[6].scan_main_panel.use_PASTA_RadioButton.setSelected(false) self.cav_controllers[7].scan_main_panel.use_PASTA_RadioButton.setSelected(false) self.cav_controllers[8].scan_main_panel.use_PASTA_RadioButton.setSelected(false) self.cav_controllers[9].scan_main_panel.use_PASTA_RadioButton.setSelected(false) self.cav_controllers[13].scan_main_panel.use_PASTA_RadioButton.setSelected(false) #------ Phase corrections after Full scan for MEBT self.cav_controllers[0].guess_phase_shift_text.setValue(-10.0) self.cav_controllers[1].guess_phase_shift_text.setValue(-6.0) #------ Phase and amplitude corrections after Full scan for inner BPM self.cav_controllers[5].guess_phase_shift_text.setValue(-4.0) self.cav_controllers[5].guess_cav_amp_shift_text.setValue(-2.0) self.cav_controllers[6].guess_phase_shift_text.setValue(1.) self.cav_controllers[6].guess_cav_amp_shift_text.setValue(0.7) self.cav_controllers[8].guess_phase_shift_text.setValue(0.) self.cav_controllers[8].guess_cav_amp_shift_text.setValue(-0.7) self.cav_controllers[10].guess_phase_shift_text.setValue(0.) self.cav_controllers[10].guess_cav_amp_shift_text.setValue(-3.6) self.cav_controllers[11].guess_phase_shift_text.setValue(0.) self.cav_controllers[11].guess_cav_amp_shift_text.setValue(-3.7) #------ The BPMs for Full Scan and PASTA self.cav_controllers[0].cav_bpms_controller.work_bpm_index = 1 self.cav_controllers[1].cav_bpms_controller.work_bpm_index = 1 self.cav_controllers[5].cav_bpms_controller.pasta_bpm_0_index = 2 self.cav_controllers[5].cav_bpms_controller.pasta_bpm_1_index = 5 self.cav_controllers[6].cav_bpms_controller.pasta_bpm_0_index = 2 self.cav_controllers[6].cav_bpms_controller.pasta_bpm_1_index = 4 self.cav_controllers[7].cav_bpms_controller.pasta_bpm_0_index = 2 self.cav_controllers[7].cav_bpms_controller.pasta_bpm_1_index = 5 self.cav_controllers[8].cav_bpms_controller.pasta_bpm_0_index = 5 self.cav_controllers[8].cav_bpms_controller.pasta_bpm_1_index = 6 self.cav_controllers[9].cav_bpms_controller.pasta_bpm_0_index = 3 self.cav_controllers[9].cav_bpms_controller.pasta_bpm_1_index = 5 self.cav_controllers[10].cav_bpms_controller.pasta_bpm_0_index = 5 self.cav_controllers[10].cav_bpms_controller.pasta_bpm_1_index = 6 self.cav_controllers[11].cav_bpms_controller.pasta_bpm_0_index = 2 self.cav_controllers[11].cav_bpms_controller.pasta_bpm_1_index = 3 self.cav_controllers[12].cav_bpms_controller.pasta_bpm_0_index = 2 self.cav_controllers[12].cav_bpms_controller.pasta_bpm_1_index = 4 self.cav_controllers[13].cav_bpms_controller.pasta_bpm_0_index = 3 self.cav_controllers[13].cav_bpms_controller.pasta_bpm_1_index = 4 self.cav_controllers[11].cav_bpms_controller.sin_wave_bpm_index = 0 self.cav_controllers[12].cav_bpms_controller.sin_wave_bpm_index = 0 self.cav_controllers[13].cav_bpms_controller.sin_wave_bpm_index = 1 #-----Target power levels self.cav_controllers[4].cav_wrapper.net_pwr_goal = 378.0 self.cav_controllers[5].cav_wrapper.net_pwr_goal = 1208.0 self.cav_controllers[6].cav_wrapper.net_pwr_goal = 1294.0 self.cav_controllers[7].cav_wrapper.net_pwr_goal = 1416.0 self.cav_controllers[8].cav_wrapper.net_pwr_goal = 1454.0 self.cav_controllers[9].cav_wrapper.net_pwr_goal = 1414.0 self.cav_controllers[10].cav_wrapper.net_pwr_goal = 2531.0 self.cav_controllers[11].cav_wrapper.net_pwr_goal = 2984.0 self.cav_controllers[12].cav_wrapper.net_pwr_goal = 3018.0 self.cav_controllers[13].cav_wrapper.net_pwr_goal = 2856.0 #---------------------------------------------- left_panel = JPanel(BorderLayout()) self.tabbedPane = JTabbedPane() self.tabbedPane.add("Cavity",JPanel(BorderLayout())) self.tabbedPane.add("Parameters",JPanel(BorderLayout())) #-------------------------------------------------------- self.cav_table = JTable(Cavities_Table_Model(self)) self.cav_table.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION) self.cav_table.setFillsViewportHeight(true) self.cav_table.setPreferredScrollableViewportSize(Dimension(500,240)) self.cav_table.getSelectionModel().addListSelectionListener(Cavs_Table_Selection_Listener(self)) scrl_cav_panel = JScrollPane(self.cav_table) scrl_cav_panel.setBorder(BorderFactory.createTitledBorder(etched_border,"Cavities' Parameters")) init_buttons_panel = Init_Cav_Controllers_Panel(self) start_stop_panel = Start_Stop_Panel(self) #---- fake scan button self.keepAllCavParams_RadioButton = start_stop_panel.keepAllCavParams_RadioButton self.keepAmps_RadioButton = start_stop_panel.keepAmps_RadioButton #---- status text field self.status_text = start_stop_panel.status_text tmp0_panel = JPanel(BorderLayout()) tmp0_panel.add(init_buttons_panel,BorderLayout.NORTH) tmp0_panel.add(scrl_cav_panel,BorderLayout.CENTER) tmp0_panel.add(start_stop_panel,BorderLayout.SOUTH) tmp1_panel = JPanel(BorderLayout()) tmp1_panel.add(tmp0_panel,BorderLayout.NORTH) left_panel.add(tmp1_panel,BorderLayout.WEST) #-------------------------------------------------------- self.main_panel.add(left_panel,BorderLayout.WEST) self.main_panel.add(self.tabbedPane,BorderLayout.CENTER) #---- non GUI controllers self.particle_tracker_model = Particle_Tracker_Model(self) self.env_tracker_model = Envelop_Tracker_Model(self) def getMainPanel(self): return self.main_panel def getMessageTextField(self): return self.top_document.getMessageTextField() def writeDataToXML(self,root_da): main_loop_cntrl_da = root_da.createChild("MAIN_CONTROLLER") main_loop_cntrl_da.setValue("keep_cav_params",self.keepAllCavParams_RadioButton.isSelected()) main_loop_cntrl_da.setValue("keep_cav_amp",self.keepAmps_RadioButton.isSelected()) #--------------------------------------------------------------------------------- bpm_wrappers_da = main_loop_cntrl_da.createChild("BPM_WRAPPERS") for bpm_wrapper in self.bpm_wrappers: bpm_wrapper.writeDataToXML(bpm_wrappers_da) for bpm_wrapper in self.scl_bpm_wrappers: bpm_wrapper.writeDataToXML(bpm_wrappers_da) #--------------------------------------------------------------------------------- for cav_controller in self.cav_controllers: cav_controller.writeDataToXML(main_loop_cntrl_da) def readDataFromXML(self,root_da): main_loop_cntrl_da = root_da.childAdaptor("MAIN_CONTROLLER") if(main_loop_cntrl_da.intValue("keep_cav_params") == 1): self.keepAllCavParams_RadioButton.setSelected(true) else: self.keepAllCavParams_RadioButton.setSelected(false) if(main_loop_cntrl_da.intValue("keep_cav_amp") == 1): self.keepAmps_RadioButton.setSelected(true) else: self.keepAmps_RadioButton.setSelected(false) #----------------------------------------------------- bpm_wrappers_da = main_loop_cntrl_da.childAdaptor("BPM_WRAPPERS") if(bpm_wrappers_da != null): for bpm_wrapper in self.bpm_wrappers: bpm_wrapper.readDataFromXML(bpm_wrappers_da) for bpm_wrapper in self.scl_bpm_wrappers: bpm_wrapper.readDataFromXML(bpm_wrappers_da) #----------------------------------------------------- for cav_controller in self.cav_controllers: cav_cntrl_data_da = main_loop_cntrl_da.childAdaptor("CAVITY_CONTROLLER_"+cav_controller.cav_wrapper.alias) cav_controller.readDataFromXML(cav_cntrl_data_da) def connectAllPVs(self): for cav_wrapper in self.cav_wrappers: try: cav_wrapper.connectPVs() except: self.getMessageTextField().setText("Cannot connect PVs for cavity="+cav_wrapper.alias) return false return true def initAllCavControllers(self, ind_start = -1, ind_stop = -1): res = self.connectAllPVs() if(not res): return false if(ind_start < 0): ind_start = 0 ind_stop = len(self.cav_controllers) - 1 for cav_controller in self.cav_controllers[ind_start:ind_stop+1]: try: cav_controller.init() except: self.getMessageTextField().setText("Cannot read cavities' PVs! Cavity="+cav_controller.cav_wrapper.alias) return false return true def setBPM_Off(self,bpm_wrapper): """ Set BPM as bad and unused in measurements. Returns true if it is successful, false otherwise. """ self.getMessageTextField().setText("") txt = "" for cav_controller in self.cav_controllers: if(cav_controller.checkBPM_Usage(bpm_wrapper)): txt += " "+cav_controller.cav_wrapper.alias if(txt != ""): self.getMessageTextField().setText("Cannot remove "+bpm_wrapper.alias+" It is used in cavs: "+txt) return false return true
class Init_and_Fit_Params_Controller: def __init__(self, linac_wizard_document, transverse_twiss_fitting_controller): self.linac_wizard_document = linac_wizard_document self.transverse_twiss_fitting_controller = transverse_twiss_fitting_controller self.main_panel = JPanel(BorderLayout()) tmp_panel = JPanel(GridLayout(7, 2)) self.eKin_text = DoubleInputTextField(0., ScientificNumberFormat(7), 8) eKin_lbl = JLabel("eKin[MeV]=", JLabel.RIGHT) self.current_text = DoubleInputTextField(0., ScientificNumberFormat(4), 8) current_lbl = JLabel("Curr.[mA]=", JLabel.RIGHT) self.fit_err_text = DoubleInputTextField(0., ScientificNumberFormat(4), 8) fit_err_lbl = JLabel("Fit Err,%=", JLabel.RIGHT) self.fit_err_text.setValue(5.0) self.fit_iter_text = DoubleInputTextField(0., ScientificNumberFormat(1), 8) iter_lbl = JLabel("Fit Iterations=", JLabel.RIGHT) self.fit_iter_text.setValue(200) self.fit_iter_left_text = DoubleInputTextField( 0., ScientificNumberFormat(1), 8) iter_left_lbl = JLabel("Iters. Left=", JLabel.RIGHT) self.avg_diff_text = DoubleInputTextField(0., ScientificNumberFormat(7), 8) avg_diff_lbl = JLabel("Avg.Diff.[mm]=", JLabel.RIGHT) tmp_panel.add(eKin_lbl) tmp_panel.add(self.eKin_text) tmp_panel.add(current_lbl) tmp_panel.add(self.current_text) tmp_panel.add(fit_err_lbl) tmp_panel.add(self.fit_err_text) tmp0_lbl = JLabel("==========", JLabel.RIGHT) tmp1_lbl = JLabel("==========", JLabel.RIGHT) tmp_panel.add(tmp0_lbl) tmp_panel.add(tmp1_lbl) tmp_panel.add(iter_lbl) tmp_panel.add(self.fit_iter_text) tmp_panel.add(iter_left_lbl) tmp_panel.add(self.fit_iter_left_text) tmp_panel.add(avg_diff_lbl) tmp_panel.add(self.avg_diff_text) #----etched border etched_border = BorderFactory.createEtchedBorder() #------buttons panel ------------ one_pass_button = JButton("Make One Pass") one_pass_button.addActionListener( One_Pass_Listener(self.linac_wizard_document)) fit_button = JButton("Start Fitting") fit_button.addActionListener( Twiss_Fitting_Listener(self.linac_wizard_document)) stop_fit_button = JButton("Stop Fitting") stop_fit_button.addActionListener( Stop_Twiss_Fitting_Listener(self.linac_wizard_document)) buttons_panel = JPanel(GridLayout(3, 1)) button0_panel = JPanel(FlowLayout(FlowLayout.CENTER, 3, 3)) button0_panel.add(one_pass_button) button1_panel = JPanel(FlowLayout(FlowLayout.CENTER, 3, 3)) button1_panel.add(fit_button) button2_panel = JPanel(FlowLayout(FlowLayout.CENTER, 3, 3)) button2_panel.add(stop_fit_button) buttons_panel.add(button0_panel) buttons_panel.add(button1_panel) buttons_panel.add(button2_panel) #--------- Final Twiss parameters table ----- self.final_twiss_params_holder = Twiss_Params_Holder() self.finalTwiss_table = JTable( Final_Twiss_Table_Model(self.final_twiss_params_holder)) self.finalTwiss_table.setSelectionMode( ListSelectionModel.SINGLE_SELECTION) self.finalTwiss_table.setFillsViewportHeight(true) self.finalTwiss_table.setPreferredScrollableViewportSize( Dimension(180, 80)) final_to_init_button = JButton("Copy Results To Initial Twiss") final_to_init_button.addActionListener( Copy_Twiss_Listener(self.transverse_twiss_fitting_controller)) button2_panel = JPanel(FlowLayout(FlowLayout.CENTER, 3, 3)) button2_panel.add(final_to_init_button) finalTwiss_panel = JPanel(BorderLayout()) finalTwiss_panel.add(JScrollPane(self.finalTwiss_table), BorderLayout.CENTER) finalTwiss_panel.add(button2_panel, BorderLayout.SOUTH) border = BorderFactory.createTitledBorder( etched_border, "Final Twiss Fitting Results") finalTwiss_panel.setBorder(border) #---------make main panel -------------- tmp1_panel = JPanel(BorderLayout()) tmp1_panel.add(tmp_panel, BorderLayout.NORTH) tmp1_panel.add(buttons_panel, BorderLayout.SOUTH) tmp2_panel = JPanel(BorderLayout()) tmp2_panel.add(tmp1_panel, BorderLayout.WEST) tmp2_panel.add(finalTwiss_panel, BorderLayout.CENTER) self.main_panel.add(tmp2_panel, BorderLayout.NORTH) def getMainPanel(self): return self.main_panel
class SCL_Long_TuneUp_Init_Controller: def __init__(self,scl_long_tuneup_controller): #--- scl_long_tuneup_controller the parent document for all SCL tune up controllers self.scl_long_tuneup_controller = scl_long_tuneup_controller self.main_panel = JPanel(BorderLayout()) #----etched border etched_border = BorderFactory.createEtchedBorder() #------top init panel----------------------- top_init_panel = JPanel(BorderLayout()) init_panel = JPanel(BorderLayout()) init_panel0 = JPanel(BorderLayout()) init_button = JButton(" Init BPMs and Cavities ") get_quad_fields_button = JButton(" Get Quad Fields ") restore_init_button = JButton(" Restore Cavities' Phases ") set_unblanked_button = JButton("Un-blank all Cavities") init_button.addActionListener(Init_BPMs_and_Cavities_Button_Listener(self.scl_long_tuneup_controller)) get_quad_fields_button.addActionListener(Get_Quad_Fields_Button_Listener(self.scl_long_tuneup_controller)) restore_init_button.addActionListener(Restore_Init_BPMs_and_Cavities_Button_Listener(self.scl_long_tuneup_controller)) set_unblanked_button.addActionListener(Unblank_All_Cavities_Button_Listener(self.scl_long_tuneup_controller)) expl_text = "Checks response from BPMs and memorizes initial amp./phases of cavities. \n" expl_text = expl_text + " D - Design, I.L. - Initial Live values. \n" expl_text = expl_text + " BPM1 and BPM2 will be used for the cavity phase setup during the raw phase scan.\n" init_text = JTextArea(expl_text) init_panel01 = JPanel(GridLayout(4,1,10,10)) init_panel01.add(init_button) init_panel01.add(get_quad_fields_button) init_panel01.add(restore_init_button) init_panel01.add(set_unblanked_button) init_panel01.setBorder(etched_border) init_panel0.add(init_panel01,BorderLayout.WEST) init_panel0.add(init_text,BorderLayout.CENTER) init_panel1 = JPanel(FlowLayout(FlowLayout.LEFT,5,5)) init_set_bpm1_button = JButton(" Set BPM1 to Selected Cavs ") init_set_bpm2_button = JButton(" Set BPM2 to Selected Cavs ") init_set_bpm3_button = JButton(" Clear BPM1/BPM2 for Selected Cavs ") init_set_bpm1_button.addActionListener(Init_Set_BPM_to_Cav_Button_Listener(self.scl_long_tuneup_controller,1)) init_set_bpm2_button.addActionListener(Init_Set_BPM_to_Cav_Button_Listener(self.scl_long_tuneup_controller,2)) init_set_bpm3_button.addActionListener(Clear_BPM0_BPM1_Button_Listener(self.scl_long_tuneup_controller)) min_bpm_dist_label = JLabel("Min. BPM 1-2 Dist.[m]=",JLabel.RIGHT) self.min_bpm_dist_txt = DoubleInputTextField(22.0,ScientificNumberFormat(6),6) max_bpm_dist_label = JLabel("Max.=",JLabel.RIGHT) self.max_bpm_dist_txt = DoubleInputTextField(75.0,ScientificNumberFormat(6),6) init_panel1.add(init_set_bpm1_button) init_panel1.add(init_set_bpm2_button) init_panel1.add(init_set_bpm3_button) init_panel1.add(min_bpm_dist_label) init_panel1.add(self.min_bpm_dist_txt) init_panel1.add(max_bpm_dist_label) init_panel1.add(self.max_bpm_dist_txt) init_panel.add(init_panel0,BorderLayout.SOUTH) init_panel.add(init_panel1,BorderLayout.NORTH) init_panel.setBorder(etched_border) top_init_panel.add(init_panel,BorderLayout.NORTH) self.bpm_table = JTable(Init_BPMs_Table_Model(self.scl_long_tuneup_controller)) self.cav_table = JTable(Init_Cavities_Table_Model(self.scl_long_tuneup_controller)) self.bpm_table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION) self.cav_table.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION) self.bpm_table.setFillsViewportHeight(true) self.cav_table.setFillsViewportHeight(true) self.bpm_table.setPreferredScrollableViewportSize(Dimension(300,300)) #self.cav_table.setPreferredScrollableViewportSize(Dimension(120,300)) scrl_panel0 = JScrollPane(self.bpm_table) scrl_panel1 = JScrollPane(self.cav_table) scrl_panel0.setBorder(etched_border) scrl_panel1.setBorder(etched_border) bpm_cav_tables_panel = JPanel(BorderLayout()) bpm_cav_tables_panel.add(scrl_panel0,BorderLayout.WEST) bpm_cav_tables_panel.add(scrl_panel1,BorderLayout.CENTER) top_init_panel.add(bpm_cav_tables_panel,BorderLayout.CENTER) #-------------------------------------------------- self.main_panel.add(top_init_panel,BorderLayout.CENTER) #-------------------------------------------------- self.scl_quad_fields_dict_holder = SCL_Quad_Fields_Dict_Holder(self.scl_long_tuneup_controller) def getMainPanel(self): return self.main_panel def allPairsSet(self): res = true for cav_wrapper in self.scl_long_tuneup_controller.cav_wrappers: if(cav_wrapper.isGood and (cav_wrapper.bpm_wrapper0 == null or cav_wrapper.bpm_wrapper1 == null)): res = false return res def connectAllBPMs(self): bpm_wrappers = self.scl_long_tuneup_controller.bpm_wrappers bpm_batch_reader = self.scl_long_tuneup_controller.bpmBatchReader #if(bpm_wrappers != bpm_batch_reader.bpm_wrappers): bpm_batch_reader.setBPMs(bpm_wrappers) if(self.scl_long_tuneup_controller.beamTrigger == null): self.scl_long_tuneup_controller.beamTrigger = BeamTrigger(self.scl_long_tuneup_controller) if(bpm_batch_reader.beam_trigger == null): bpm_batch_reader.setBeamTrigger(self.scl_long_tuneup_controller.beamTrigger) self.scl_long_tuneup_controller.beamTrigger.setUseTrigger(false)
class SessionRequestTab(IMessageEditorTab): """UI of the extension.""" def refresh_sessions(self): self._session_selector.setModel( DefaultComboBoxModel(self._extender.sm.sessions)) self._session_selector.setSelectedItem( self._extender.sm.selected_session) def deleteSession(self, evt): """Listener for the Delete Session button.""" if JOptionPane.showConfirmDialog( None, "Are you sure?", "", JOptionPane.YES_NO_OPTION) == JOptionPane.OK_OPTION: self._extender.sm.remove_session() self.refresh_sessions() self.update_table() self.parse_message() @attach_stack_trace def new_session(self, evt): """Listener for New Session button.""" name = JOptionPane.showInputDialog(None, "Name the new session:", "Session name") if name != None: from_request = JOptionPane.showConfirmDialog( None, "Create session from current request?", "From current request?", JOptionPane.YES_NO_OPTION) self._extender.sm.new_session(name) self.refresh_sessions() # let user select parameters for new session if from_request == JOptionPane.OK_OPTION: dialog = SessionFromRequestDialog(self) dialog.setVisible(True) def changeSession(self, evt): """Listener for session combobox""" if evt.getStateChange() == 1: session = evt.getItem() self._extender.sm.selected_session = session self.update_table() self.parse_message() @attach_stack_trace def update_table(self): """Updates the table with new data""" columns = ["Type", "Action", "Name", "Value"] data = [] for param in self._extender.sm.selected_session.params: data.append(param.as_table_row()) data.append([ Parameter.type_mapping[Parameter.PARAM_COOKIE], Parameter.ACTION_MODIFY, "", "" ]) data_model = DefaultTableModel(data, columns, tableChanged=self.tableChanged) self.modification_table.setModel(data_model) # type combobox type_combo = JComboBox(self._types) type_column = self.modification_table.getColumnModel().getColumn(0) type_column.setCellEditor(DefaultCellEditor(type_combo)) type_column.setMaxWidth(75) # action combobox action_combo = JComboBox(self._actions) action_column = self.modification_table.getColumnModel().getColumn(1) action_column.setCellEditor(DefaultCellEditor(action_combo)) action_column.setMaxWidth(75) action_combo.setSelectedItem("replace") @attach_stack_trace def tableChanged(self, evt): """Handles changes to table cells, i.e. Parameter changes.""" if evt.getType() == 0: # UPDATING a cell table_model = evt.getSource() row = evt.getFirstRow() col = evt.getColumn() # Removing a row was selected if col == 0 and "Remove Row" in table_model.getValueAt( row, col) and table_model.getRowCount() > 1: table_model.removeRow(row) # update the model session = self._extender.sm.selected_session session.reset() for r in range(table_model.getRowCount() - 1): type = str(table_model.getValueAt(r, 0)) action = str(table_model.getValueAt(r, 1)) name = table_model.getValueAt(r, 2) value = table_model.getValueAt(r, 3) if type != None and name != None and value != None: param = Parameter(type, action, name, self._extender.helpers.urlDecode(value)) session.modify(param) # Check if there is an empty last row has_empty_row = True for i in range(2, 4): val = table_model.getValueAt(table_model.getRowCount() - 1, i) if val != None and val != "": has_empty_row = False break # no empty last row, add one if not has_empty_row: table_model.addRow(["", Parameter.ACTION_MODIFY, "", ""]) # update message editor self.parse_message() def parse_message(self): self._editor.setText( self._extender.process_request(self._extender.HTTP)) def getTabCaption(self): return "Session" def getUiComponent(self): return self._panel def isEnabled(self, content, isRequest): return isRequest def setMessage(self, content, isRequest): self._extender.HTTP = self._extender.helpers.bytesToString(content) self._editor.setText(content) self.refresh_sessions() self.update_table() def getMessage(self): return self._editor.getText() def isModified(self): return self._editor.isTextModified() def getSelectedData(self): return self._editor.getSelectedText() @attach_stack_trace def __init__(self, extender, controller, editable): self._extender = extender self._panel = JPanel() # main panel # type combobox for tables self._types = Parameter.type_mapping.values() + ["- Remove Row -"] self._actions = ["replace", "insert", "delete"] # define the GridBagLayout ( 4x4 ) gridBagLayout = GridBagLayout() gridBagLayout.columnWidths = [0, 0, 0, 0] gridBagLayout.rowHeights = [0, 0, 0, 0] gridBagLayout.columnWeights = [1.0, 0.0, 0.0, 0.0] gridBagLayout.rowWeights = [0.0, 1.0, 5.0, 0.0] self._panel.setLayout(gridBagLayout) # JComboBox for Session selection self._session_selector = JComboBox(extender.sm.sessions, itemStateChanged=self.changeSession) self._session_selector_model = self._session_selector.getModel() gbc_session_selector = _new_grid_bag(0, 0) self._panel.add(self._session_selector, gbc_session_selector) # "Delete Session" Button del_session = JButton("Delete Session", actionPerformed=self.deleteSession) gbc_del_session = _new_grid_bag(1, 0) self._panel.add(del_session, gbc_del_session) # "New Session" Button new_session = JButton("New Session", actionPerformed=self.new_session) gbc_new_session = _new_grid_bag(2, 0) self._panel.add(new_session, gbc_new_session) # Table containing modified parameters self.modification_table = JTable() self.update_table() gbc_modification_table = _new_grid_bag(0, 1, 3) self._panel.add(JScrollPane(self.modification_table), gbc_modification_table) self.modification_table.setPreferredScrollableViewportSize( self.modification_table.getPreferredSize()) self.modification_table.setFillsViewportHeight(True) # HTTP message editor self._editor = self._extender.callbacks.createTextEditor() gbc_messageEditor = _new_grid_bag(0, 2, 3) self._panel.add(self._editor.getComponent(), gbc_messageEditor)
class SCL_Scan_Data_CleanUp_Controller: def __init__(self, scl_long_tuneup_controller): #--- scl_long_tuneup_controller the parent document for all SCL tune up controllers self.scl_long_tuneup_controller = scl_long_tuneup_controller #----etched border etched_border = BorderFactory.createEtchedBorder() #----main panel self.main_panel = JPanel(BorderLayout()) #------top params panel----------------------- right_info_panel = JPanel(BorderLayout()) right_top_control_panel = JPanel(FlowLayout(FlowLayout.LEFT, 1, 1)) analysis_button = JButton("Find BAD Points") analysis_button.addActionListener(Analyze_Data_Button_Listener(self)) right_top_control_panel.add(analysis_button) #------ maximal bpm phase error after the scan max_phase_err_lbl = JLabel("Max BPM Phase Err = ", JLabel.RIGHT) self.max_phase_err_text = DoubleInputTextField(10.0, DecimalFormat("##.#"), 5) right_top_control_panel.add(max_phase_err_lbl) right_top_control_panel.add(self.max_phase_err_text) #----------------------------------------------- right_bottom_control_panel = JPanel(BorderLayout()) right_bottom_control_panel0 = JPanel(BorderLayout()) right_bottom_control_panel1 = JPanel(FlowLayout(FlowLayout.LEFT, 1, 1)) right_bottom_control_panel.add(right_bottom_control_panel0, BorderLayout.NORTH) right_bottom_control_panel.add(right_bottom_control_panel1, BorderLayout.SOUTH) statistics_of_errors_lbl = JLabel("Statistics:", JLabel.RIGHT) self.statistics_of_errors_txt = JTextField() right_bottom_control_panel0.add(statistics_of_errors_lbl, BorderLayout.WEST) right_bottom_control_panel0.add(self.statistics_of_errors_txt, BorderLayout.CENTER) remove_worst_points_button = JButton("Remove Worst Points") remove_worst_points_button.addActionListener( CleanUp_Worst_Phase_Points_Data_Button_Listener(self)) remove_all_bad_bpms_button = JButton("Remove All Bad BPMs") remove_all_bad_bpms_button.addActionListener( CleanUp_All_Bad_BPMs_Button_Listener(self)) right_bottom_control_panel1.add(remove_worst_points_button) right_bottom_control_panel1.add(remove_all_bad_bpms_button) #----------------------------------------------- right_tables_panel = JPanel(GridLayout(1, 3)) right_info_panel.add(right_top_control_panel, BorderLayout.NORTH) right_info_panel.add(right_tables_panel, BorderLayout.CENTER) right_info_panel.add(right_bottom_control_panel, BorderLayout.SOUTH) self.main_panel.add(right_info_panel, BorderLayout.EAST) #------cavities scan table panel -------- self.bad_bpms_amp_phase_graphs_panel = Bad_BPMs_Amp_Phase_Graphs_Panel( self) self.main_panel.add(self.bad_bpms_amp_phase_graphs_panel, BorderLayout.CENTER) #------ let's make tables for a list of cavities, bpms, and bad points indexes self.cavs_with_bad_data_table_model = Cavs_with_Bad_PhaseScan_Table_Model( self) self.cavs_table = JTable(self.cavs_with_bad_data_table_model) self.cavs_table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION) self.cavs_table.setFillsViewportHeight(true) self.cavs_table.setPreferredScrollableViewportSize(Dimension(180, 300)) self.cavs_table.getSelectionModel().addListSelectionListener( Cavs_Table_Selection_Listener(self)) self.bpms_table_model = Bad_PhaseScan_BPMs_Table_Model(self) self.bpms_table = JTable(self.bpms_table_model) self.bpms_table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION) self.bpms_table.setFillsViewportHeight(true) self.bpms_table.getSelectionModel().addListSelectionListener( BPMs_Table_Selection_Listener(self)) self.bpms_table.setPreferredScrollableViewportSize(Dimension(180, 300)) self.points_table_model = Bad_Points_Table_Model(self) self.points_table = JTable(self.points_table_model) self.points_table.setFillsViewportHeight(true) self.points_table.setPreferredScrollableViewportSize( Dimension(180, 300)) #----- set scroll panes scrl_panel0 = JScrollPane(self.cavs_table) scrl_panel1 = JScrollPane(self.bpms_table) scrl_panel2 = JScrollPane(self.points_table) scrl_panel0.setBorder( BorderFactory.createTitledBorder(etched_border, "Cavs")) scrl_panel1.setBorder( BorderFactory.createTitledBorder(etched_border, "BPMs")) scrl_panel2.setBorder( BorderFactory.createTitledBorder(etched_border, "Bad Points")) right_tables_panel.setBorder(etched_border) right_tables_panel.add(scrl_panel0) right_tables_panel.add(scrl_panel1) right_tables_panel.add(scrl_panel2) #----- dictionary with the bad data self.cavs_to_bpm_dict[cav_wrapper] = [bpm_wrappers,bpms_to_points_dict] self.cavs_to_bpm_dict = {} #----- arrays with bad data for the tables self.cavs_with_bad_data_arr = [] self.bpms_arr = [] self.points_arr = [] def cleanUp_All_Bad_BPMs_Method(self): scl_long_tuneup_controller = self.scl_long_tuneup_controller cav_wrappers = scl_long_tuneup_controller.cav_wrappers[1:] #----- dictionary with the bad data cavs_to_bpm_dict = self.cavs_to_bpm_dict #----- let's go through all cavities to find the bad bpms for cav_wrapper in cav_wrappers: if (cav_wrapper.isGood and cav_wrapper.isMeasured): if (cavs_to_bpm_dict.has_key(cav_wrapper)): [bpm_wrappers, bpms_to_points_dict] = cavs_to_bpm_dict[cav_wrapper] for bpm_wrapper_bad in bpm_wrappers: for bpm_ind in range(len(cav_wrapper.bpm_wrappers)): bpm_wrapper = cav_wrapper.bpm_wrappers[bpm_ind] if (bpm_wrapper_bad == bpm_wrapper): cav_wrapper.bpm_wrappers_useInAmpBPMs[ bpm_ind] = false cav_wrapper.bpm_wrappers_useInPhaseAnalysis[ bpm_ind] = false def cleanUp_Worst_Phase_Points_Data_Method(self): scl_long_tuneup_controller = self.scl_long_tuneup_controller cav_wrappers = scl_long_tuneup_controller.cav_wrappers[1:] #----- dictionary with the bad data cavs_to_bpm_dict = self.cavs_to_bpm_dict #----- let's go through all cavities to find the worst phase scan points #----- worst points means maximal number of bad bpms with it n_total_removed_points = 0 for cav_wrapper in cav_wrappers: if (cav_wrapper.isGood and cav_wrapper.isMeasured): if (cavs_to_bpm_dict.has_key(cav_wrapper)): [bpm_wrappers, bpms_to_points_dict] = cavs_to_bpm_dict[cav_wrapper] #----- numb_of_points_dict[point_scan_ind] = [bpm1,...] numb_of_points_dict = {} for bpm_wrapper in bpm_wrappers: bad_points_arr = bpms_to_points_dict[bpm_wrapper] for [ind, x, y] in bad_points_arr: if (numb_of_points_dict.has_key(ind)): numb_of_points_dict[ind].append(bpm_wrapper) else: numb_of_points_dict[ind] = [ bpm_wrapper, ] max_bpms_ind = -1 max_numb_of_bpms = 0 for ind in numb_of_points_dict.keys(): n_bpms = len(numb_of_points_dict[ind]) if (n_bpms > max_numb_of_bpms): max_bpms_ind = ind if (max_bpms_ind >= 0): #---- the phase scan data with this index should be removed n_bpms = len(numb_of_points_dict[max_bpms_ind]) if (n_bpms > 1): n_total_removed_points += n_bpms gd = cav_wrapper.phaseDiffPlot gd.removePoint(max_bpms_ind) for bpm_wrapper in cav_wrapper.bpm_wrappers: (graphDataAmp, graphDataPhase ) = cav_wrapper.getAmpPhaseGraphs(bpm_wrapper) if (graphDataAmp != null): graphDataAmp.removePoint(max_bpms_ind) if (graphDataPhase != null): graphDataPhase.removePoint(max_bpms_ind) #print "debug cav=",cav_wrapper.alias," n bpms=",n_bpms #print "debug n_total_removed_points=",n_total_removed_points def analyze_Data_Method(self): scl_long_tuneup_controller = self.scl_long_tuneup_controller max_phase_diff0 = self.max_phase_err_text.getValue() cav_wrappers = scl_long_tuneup_controller.cav_wrappers[1:] #----- dictionary with the bad data self.cavs_to_bpm_dict = {} cavs_to_bpm_dict = self.cavs_to_bpm_dict #----- arrays with bad data for the tables self.cavs_with_bad_data_arr = [] self.bpms_arr = [] self.points_arr = [] #---- data analysis for bad points total_nPoints = 0 for cav_wrapper in cav_wrappers: if (cav_wrapper.isGood and cav_wrapper.isMeasured): bpm_wrapper0 = cav_wrapper.bpm_wrapper0 bpm_wrapper1 = cav_wrapper.bpm_wrapper1 pos0 = bpm_wrapper0.pos pos1 = bpm_wrapper1.pos phaseDiffPlot = cav_wrapper.phaseDiffPlot (graphDataAmp0, graphDataPhase0 ) = cav_wrapper.bpm_amp_phase_dict[bpm_wrapper0] if (phaseDiffPlot.getNumbOfPoints() == 0): continue for bpm_wrapper_ind in range(len(cav_wrapper.bpm_wrappers)): bpm_wrapper = cav_wrapper.bpm_wrappers[bpm_wrapper_ind] pos = bpm_wrapper.pos if (pos < pos0): continue pos_coeff = (pos - pos0) / (pos1 - pos0) max_phase_diff = max_phase_diff0 if (pos_coeff >= 1.0): max_phase_diff = pos_coeff * max_phase_diff0 if (cav_wrapper. bpm_wrappers_useInPhaseAnalysis[bpm_wrapper_ind]): (graphDataAmp, graphDataPhase ) = cav_wrapper.bpm_amp_phase_dict[bpm_wrapper] nPoints = phaseDiffPlot.getNumbOfPoints() bpm_phase_delta = graphDataPhase.getY( nPoints - 1) - graphDataPhase0.getY( nPoints - 1 ) - pos_coeff * phaseDiffPlot.getY(nPoints - 1) bad_points_arr = [] for ind in range(phaseDiffPlot.getNumbOfPoints()): total_nPoints += 1 y = graphDataPhase.getY( ind) - graphDataPhase0.getY( ind) - pos_coeff * phaseDiffPlot.getY( ind) - bpm_phase_delta y = makePhaseNear(y, 0.) if (abs(y) > max_phase_diff): bad_points_arr.append( [ind, graphDataPhase.getX(ind), y]) if (len(bad_points_arr) > 0): if (not cavs_to_bpm_dict.has_key(cav_wrapper)): cavs_to_bpm_dict[cav_wrapper] = [[], {}] [bpm_wrappers, bpms_to_points_dict ] = cavs_to_bpm_dict[cav_wrapper] bpm_wrappers.append(bpm_wrapper) bpms_to_points_dict[bpm_wrapper] = bad_points_arr for cav_wrapper in cav_wrappers: if (cavs_to_bpm_dict.has_key(cav_wrapper)): self.cavs_with_bad_data_arr.append(cav_wrapper) #-------------------------------------------------------------------- nCavs = 0 nBPMs = 0 nPoints = 0 for cav_wrapper in self.cavs_with_bad_data_arr: [bpm_wrappers, bpms_to_points_dict] = cavs_to_bpm_dict[cav_wrapper] nCavs += 1 nBPMs += len(bpm_wrappers) for bpm_wrapper in bpm_wrappers: points_arr = bpms_to_points_dict[bpm_wrapper] nPoints += len(points_arr) st = "N Bad: Cavs= " + str(nCavs) + " BPMs= " + str( nBPMs) + " Phase Points=" + str(nPoints) + "/" + str( total_nPoints) self.statistics_of_errors_txt.setText(st) self.cavs_table.getModel().fireTableDataChanged() self.bpms_table.getModel().fireTableDataChanged() self.points_table.getModel().fireTableDataChanged() nCavs = len(self.cavs_with_bad_data_arr)
class Init_and_Fit_Params_Controller: def __init__(self,linac_wizard_document,transverse_twiss_fitting_controller): self.linac_wizard_document = linac_wizard_document self.transverse_twiss_fitting_controller = transverse_twiss_fitting_controller self.main_panel = JPanel(BorderLayout()) tmp_panel = JPanel(GridLayout(7,2)) self.eKin_text = DoubleInputTextField(0.,ScientificNumberFormat(7),8) eKin_lbl = JLabel("eKin[MeV]=",JLabel.RIGHT) self.current_text = DoubleInputTextField(0.,ScientificNumberFormat(4),8) current_lbl = JLabel("Curr.[mA]=",JLabel.RIGHT) self.fit_err_text = DoubleInputTextField(0.,ScientificNumberFormat(4),8) fit_err_lbl = JLabel("Fit Err,%=",JLabel.RIGHT) self.fit_err_text.setValue(5.0) self.fit_iter_text = DoubleInputTextField(0.,ScientificNumberFormat(1),8) iter_lbl = JLabel("Fit Iterations=",JLabel.RIGHT) self.fit_iter_text.setValue(200) self.fit_iter_left_text = DoubleInputTextField(0.,ScientificNumberFormat(1),8) iter_left_lbl = JLabel("Iters. Left=",JLabel.RIGHT) self.avg_diff_text = DoubleInputTextField(0.,ScientificNumberFormat(7),8) avg_diff_lbl = JLabel("Avg.Diff.[mm]=",JLabel.RIGHT) tmp_panel.add(eKin_lbl) tmp_panel.add(self.eKin_text) tmp_panel.add(current_lbl) tmp_panel.add(self.current_text) tmp_panel.add(fit_err_lbl) tmp_panel.add(self.fit_err_text) tmp0_lbl = JLabel("==========",JLabel.RIGHT) tmp1_lbl = JLabel("==========",JLabel.RIGHT) tmp_panel.add(tmp0_lbl) tmp_panel.add(tmp1_lbl) tmp_panel.add(iter_lbl) tmp_panel.add(self.fit_iter_text) tmp_panel.add(iter_left_lbl) tmp_panel.add(self.fit_iter_left_text) tmp_panel.add(avg_diff_lbl) tmp_panel.add(self.avg_diff_text) #----etched border etched_border = BorderFactory.createEtchedBorder() #------buttons panel ------------ one_pass_button = JButton("Make One Pass") one_pass_button.addActionListener(One_Pass_Listener(self.linac_wizard_document)) fit_button = JButton("Start Fitting") fit_button.addActionListener(Twiss_Fitting_Listener(self.linac_wizard_document)) stop_fit_button = JButton("Stop Fitting") stop_fit_button.addActionListener(Stop_Twiss_Fitting_Listener(self.linac_wizard_document)) buttons_panel = JPanel(GridLayout(3,1)) button0_panel = JPanel(FlowLayout(FlowLayout.CENTER,3,3)) button0_panel.add(one_pass_button) button1_panel = JPanel(FlowLayout(FlowLayout.CENTER,3,3)) button1_panel.add(fit_button) button2_panel = JPanel(FlowLayout(FlowLayout.CENTER,3,3)) button2_panel.add(stop_fit_button) buttons_panel.add(button0_panel) buttons_panel.add(button1_panel) buttons_panel.add(button2_panel) #--------- Final Twiss parameters table ----- self.final_twiss_params_holder = Twiss_Params_Holder() self.finalTwiss_table = JTable(Final_Twiss_Table_Model(self.final_twiss_params_holder)) self.finalTwiss_table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION) self.finalTwiss_table.setFillsViewportHeight(true) self.finalTwiss_table.setPreferredScrollableViewportSize(Dimension(180,80)) final_to_init_button = JButton("Copy Results To Initial Twiss") final_to_init_button.addActionListener(Copy_Twiss_Listener(self.transverse_twiss_fitting_controller)) button2_panel = JPanel(FlowLayout(FlowLayout.CENTER,3,3)) button2_panel.add(final_to_init_button) finalTwiss_panel = JPanel(BorderLayout()) finalTwiss_panel.add(JScrollPane(self.finalTwiss_table), BorderLayout.CENTER) finalTwiss_panel.add(button2_panel,BorderLayout.SOUTH) border = BorderFactory.createTitledBorder(etched_border,"Final Twiss Fitting Results") finalTwiss_panel.setBorder(border) #---------make main panel -------------- tmp1_panel = JPanel(BorderLayout()) tmp1_panel.add(tmp_panel,BorderLayout.NORTH) tmp1_panel.add(buttons_panel,BorderLayout.SOUTH) tmp2_panel = JPanel(BorderLayout()) tmp2_panel.add(tmp1_panel,BorderLayout.WEST) tmp2_panel.add(finalTwiss_panel,BorderLayout.CENTER) self.main_panel.add(tmp2_panel,BorderLayout.NORTH) def getMainPanel(self): return self.main_panel
class DTL_Acceptance_Scans_Controller: def __init__(self,top_document,accl): #--- top_document is a parent document for all controllers self.top_document = top_document self.main_loop_controller = self.top_document.main_loop_controller self.main_panel = JPanel(BorderLayout()) #----etched border etched_border = BorderFactory.createEtchedBorder() #--------------------------------------------- #---- Cavities' Controllers - only DTLs self.cav_acc_scan_controllers = [] self.cav_wrappers = self.main_loop_controller.cav_wrappers[4:10] self.cav_acc_scan_controllers.append(DTL_Acc_Scan_Cavity_Controller(self,self.cav_wrappers[0],"FC160")) self.cav_acc_scan_controllers.append(DTL_Acc_Scan_Cavity_Controller(self,self.cav_wrappers[1],"FC248")) self.cav_acc_scan_controllers.append(DTL_Acc_Scan_Cavity_Controller(self,self.cav_wrappers[2],"FC334")) self.cav_acc_scan_controllers.append(DTL_Acc_Scan_Cavity_Controller(self,self.cav_wrappers[3],"FC428")) self.cav_acc_scan_controllers.append(DTL_Acc_Scan_Cavity_Controller(self,self.cav_wrappers[4],"FC524")) self.cav_acc_scan_controllers.append(DTL_Acc_Scan_Cavity_Controller(self,self.cav_wrappers[5],"FC104")) #----acceptance scans loop timer self.acc_scan_loop_timer = Acc_Scan_Loop_Timer(self) #---------------------------------------------- self.tabbedPane = JTabbedPane() self.tabbedPane.add("Cavity",JPanel(BorderLayout())) self.tabbedPane.add("Pattern",JPanel(BorderLayout())) #-------------------------------------------------------- self.cav_table = JTable(Cavities_Table_Model(self)) self.cav_table.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION) self.cav_table.setFillsViewportHeight(true) self.cav_table.setPreferredScrollableViewportSize(Dimension(500,120)) self.cav_table.getSelectionModel().addListSelectionListener(Cavs_Table_Selection_Listener(self)) scrl_cav_panel = JScrollPane(self.cav_table) #------------------------------------------------------- scrl_cav_panel.setBorder(BorderFactory.createTitledBorder(etched_border,"Cavities' Parameters")) init_buttons_panel = JPanel(FlowLayout(FlowLayout.LEFT,5,2)) #---- initialization buttons init_selected_cavs_button = JButton("Init Selected Cavs") init_selected_cavs_button.addActionListener(Init_Selected_Cavs_Button_Listener(self)) fc_in_selected_cavs_button = JButton("FC In for Selected Cavs") fc_in_selected_cavs_button.addActionListener(FC_In_Selected_Cavs_Button_Listener(self)) fc_out_selected_cavs_button = JButton("FC Out for Selected Cavs") fc_out_selected_cavs_button.addActionListener(FC_Out_Selected_Cavs_Button_Listener(self)) init_buttons_panel.add(init_selected_cavs_button) init_buttons_panel.add(fc_in_selected_cavs_button) init_buttons_panel.add(fc_out_selected_cavs_button) #---- start stop buttons panel self.start_stop_panel = Start_Stop_Panel(self) #------------------------------------------------- tmp0_panel = JPanel(BorderLayout()) tmp0_panel.add(init_buttons_panel,BorderLayout.NORTH) tmp0_panel.add(scrl_cav_panel,BorderLayout.CENTER) tmp0_panel.add(self.start_stop_panel,BorderLayout.SOUTH) tmp1_panel = JPanel(BorderLayout()) tmp1_panel.add(tmp0_panel,BorderLayout.NORTH) #------------------------------------------------- left_panel = JPanel(BorderLayout()) left_panel.add(tmp1_panel,BorderLayout.WEST) #-------------------------------------------------- self.main_panel.add(left_panel,BorderLayout.WEST) self.main_panel.add(self.tabbedPane,BorderLayout.CENTER) #----------- loop state self.loop_run_state = Acc_Scans_Loop_Run_State() #---- non GUI controllers def connectAllPVs(self): for cav_acc_scan_controller in self.cav_acc_scan_controllers: try: cav_acc_scan_controller.connectPVs() except: self.getMessageTextField().setText("Cannot connect PVs for cavity="+cav_acc_scan_controller.cav_wrapper.alias) return false return true def initAllCavControllers(self, ind_start = -1, ind_stop = -1): res = self.connectAllPVs() if(not res): return false if(ind_start < 0): ind_start = 0 ind_stop = len(self.cav_acc_scan_controllers) - 1 for cav_acc_scan_controller in self.cav_acc_scan_controllers[ind_start:ind_stop+1]: try: cav_acc_scan_controller.init() except: self.getMessageTextField().setText("Cannot read cavity's PVs! Cavity="+cav_acc_scan_controller.cav_wrapper.alias) return false return true def getMainPanel(self): return self.main_panel def getMessageTextField(self): return self.top_document.getMessageTextField() def writeDataToXML(self,root_da): dtl_scans_loop_cntrl_da = root_da.createChild("DTL_ACCPT_SCANS_CONTROLLER") def readDataFromXML(self,root_da): dtl_scans_loop_cntrl_da = root_da.childAdaptor("DTL_ACCPT_SCANS_CONTROLLER") if(dtl_scans_loop_cntrl_da == null): return
class Monitor_Controller: def __init__(self, event_monitor_document): self.event_monitor_document = event_monitor_document self.main_panel = JPanel(BorderLayout()) etched_border = BorderFactory.createEtchedBorder() #etched_border = BorderFactory.createRaisedSoftBevelBorder() etched_border = BorderFactory.createLineBorder(Color.black, 2, false) #-------------------------------------------------------------- self.left_panel = JPanel(VerticalLayout()) main_label = JLabel( "============ Event Monitor Parameters =============", JLabel.CENTER) self.left_panel.add(main_label) self.left_panel.setBorder(etched_border) #----------Event Monotor Params------------- monitor_params0_panel = JPanel(GridLayout(4, 2)) self.buffer_size_text = buffer_size_text buffer_size_label = JLabel("Buff. Time [sec]:", JLabel.RIGHT) monitor_params0_panel.add(buffer_size_label) monitor_params0_panel.add(self.buffer_size_text) self.event_buffer_size_text = DoubleInputTextField( 3.0, ScientificNumberFormat(1), 10) event_buffer_size_label = JLabel("Event Buff. Size:", JLabel.RIGHT) monitor_params0_panel.add(event_buffer_size_label) monitor_params0_panel.add(self.event_buffer_size_text) self.min_limit_text = DoubleInputTextField(1.0e-8, ScientificNumberFormat(4), 10) self.max_limit_text = DoubleInputTextField(1.0e-3, ScientificNumberFormat(4), 10) min_lim_label = JLabel("Trigger Min Value:", JLabel.RIGHT) max_lim_label = JLabel("Trigger Max Value:", JLabel.RIGHT) monitor_params0_panel.add(min_lim_label) monitor_params0_panel.add(self.min_limit_text) monitor_params0_panel.add(max_lim_label) monitor_params0_panel.add(self.max_limit_text) monitor_params1_panel = JPanel(BorderLayout()) monitor_params1_panel.add(monitor_params0_panel, BorderLayout.WEST) monitor_params_panel = JPanel(BorderLayout()) monitor_params_panel.add(monitor_params1_panel, BorderLayout.NORTH) self.left_panel.add(monitor_params_panel) self.pvTriggerJText = JTextField(ChannelNameDocument(), "", 30) pvTriggerButton = JButton("Set Trigger PV") pvTriggerButton.addActionListener(Set_Trigger_PV_Listener(self)) triggerPanel = JPanel(FlowLayout(FlowLayout.LEFT, 1, 1)) triggerPanel.add(pvTriggerButton) triggerPanel.add(self.pvTriggerJText) self.left_panel.add(triggerPanel) self.pvMonitorNameJText = JTextField(ChannelNameDocument(), "", 30) #------------Two Tables Panel -------------------- twoTables_panel = JPanel(GridLayout(2, 1)) #------------Monitored PV table------------------- pvMonitored_panel = JPanel(BorderLayout()) border = BorderFactory.createTitledBorder(etched_border, "Monitored PVs") pvMonitored_panel.setBorder(border) self.pvMonitorJText = JTextField(ChannelNameDocument(), "", 25) pvMonitorButton = JButton("Add PV to Monitored") pvMonitorRemoveButton = JButton("Remove Selected PVs") pvMonitorButton.addActionListener(Add_PV_To_Monitored_Listener(self)) pvMonitorRemoveButton.addActionListener( Remove_Monitored_PVs_Listener(self)) pvMonitoredPanel0 = JPanel(FlowLayout(FlowLayout.LEFT, 1, 1)) pvMonitoredPanel0.add(pvMonitorButton) pvMonitoredPanel0.add(self.pvMonitorJText) pvMonitoredPanel1 = JPanel(FlowLayout(FlowLayout.RIGHT, 1, 1)) pvMonitoredPanel1.add(pvMonitorRemoveButton) pvMonitoredPanel2 = JPanel(BorderLayout()) pvMonitoredPanel2.add(pvMonitoredPanel0, BorderLayout.NORTH) pvMonitoredPanel2.add(pvMonitoredPanel1, BorderLayout.SOUTH) pvMonitored_panel.add(pvMonitoredPanel2, BorderLayout.NORTH) self.pv_monitored_table = JTable(Monitored_PV_Table_Model(self)) self.pv_monitored_table.setPreferredScrollableViewportSize( Dimension(200, 160)) #self.pv_monitored_table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION) self.pv_monitored_table.setFillsViewportHeight(true) pvMonitored_panel.add(JScrollPane(self.pv_monitored_table), BorderLayout.CENTER) twoTables_panel.add(pvMonitored_panel) #------------Event Buffer Table------------------- buffEvents_panel = JPanel(BorderLayout()) border = BorderFactory.createTitledBorder(etched_border, "Buffered Events") buffEvents_panel.setBorder(border) self.events_table = JTable(Buffer_Events_Table_Model(self)) self.events_table.setPreferredScrollableViewportSize( Dimension(200, 160)) self.events_table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION) self.events_table.setFillsViewportHeight(true) buffEvents_panel.add(JScrollPane(self.events_table), BorderLayout.CENTER) twoTables_panel.add(buffEvents_panel) #------Stop - Start Monitoring Buttons startStopPanel = JPanel(BorderLayout()) startStopPanel.setBorder(etched_border) self.startMonitoringButton = JButton("Start Monitoring") self.stopMonitoringButton = JButton("Stop Monitoring") self.startMonitoringButton.addActionListener( Start_Monitoring_Listener(self)) self.stopMonitoringButton.addActionListener( Stop_Monitoring_Listener(self)) startStopButtonsPanel = JPanel(FlowLayout(FlowLayout.LEFT, 5, 5)) startStopButtonsPanel.add(self.startMonitoringButton) startStopButtonsPanel.add(self.stopMonitoringButton) startStopPanel.add(startStopButtonsPanel, BorderLayout.NORTH) self.sinceTimeJText = JTextField(30) self.sinceTimeJText.setForeground(Color.red) self.sinceTimeJText.setText("Not Running.") startStopPanel.add(self.sinceTimeJText, BorderLayout.SOUTH) #-------Event Handlers-------------------------------- self.event_holder = Event_Object_Holder(self.event_buffer_size_text, self) self.event_handler = Event_Handler(self.event_holder, self.min_limit_text, self.max_limit_text) #-----graph panels-------------------- self.graphs_panel = TwoGraphsPanel(self) #-----setup dump directory ----------- self.dump_directory_panel = JPanel(BorderLayout()) self.dump_button = JRadioButton("Dump Events to Files") self.dump_button.addActionListener(Dump_Events_To_Files_Listener(self)) dump_dir_choose_button = JButton(" Choose Dump Dir. ") dump_dir_choose_button.addActionListener(Find_Dump_Dir_Listener(self)) dump_dir_label = JLabel(" Dump Dir:", JLabel.RIGHT) self.dumpDirJText = JTextField(50) self.dumpDirJText.setText("/ade/xal/docs/EventMonitor/EventDirs/") dump_dir_panel0 = JPanel(FlowLayout(FlowLayout.LEFT, 1, 1)) dump_dir_panel0.add(self.dump_button) dump_dir_panel1 = JPanel(FlowLayout(FlowLayout.LEFT, 1, 1)) dump_dir_panel1.add(dump_dir_choose_button) dump_dir_panel1.add(dump_dir_label) dump_dir_panel2 = JPanel(BorderLayout()) dump_dir_panel2.add(dump_dir_panel1, BorderLayout.WEST) dump_dir_panel2.add(self.dumpDirJText, BorderLayout.CENTER) self.dump_directory_panel.add(dump_dir_panel0, BorderLayout.NORTH) self.dump_directory_panel.add(dump_dir_panel2, BorderLayout.SOUTH) #-----set up listeners ------------------------------------ tables_selection_listener = Table_Selection_Listener(self) self.pv_monitored_table.getSelectionModel().addListSelectionListener( tables_selection_listener) self.events_table.getSelectionModel().addListSelectionListener( tables_selection_listener) #--------- set up main panel params_and_tables_panel = JPanel(BorderLayout()) params_and_tables_panel.add(self.left_panel, BorderLayout.NORTH) params_and_tables_panel.add(twoTables_panel, BorderLayout.CENTER) params_and_tables_panel.add(startStopPanel, BorderLayout.SOUTH) self.main_panel.add(params_and_tables_panel, BorderLayout.WEST) self.main_panel.add(self.graphs_panel.getMainPanel(), BorderLayout.CENTER) self.main_panel.add(self.dump_directory_panel, BorderLayout.SOUTH) def setTriggerMonitor(self, pv_name): self.event_handler.setTriggerMonitor(pv_name) def getMainPanel(self): return self.main_panel
class Table(Panel): """ Implement a table with 2 columns: Roi group number and associated name. The table exposes the - tableModel: the raw data - table: a JTable which takes care of the visualization/interactions (clicks...) """ def __init__(self): super(Table, self).__init__(GridLayout( 0, 1)) # 1 column, as many rows as necessary self.tableModel = TableModel() self.table = JTable(self.tableModel) self.table.setPreferredScrollableViewportSize(Dimension(500, 100)) self.table.setFillsViewportHeight(True) # Handle row selection #table.getSelectionModel().addListSelectionListener( RowListener()) #table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION) self.table.setRowSelectionAllowed(True) #Create the scroll pane and add the table to it. scrollPane = JScrollPane(self.table) #ScrollPane scrollPane = ScrollPane() #scrollPane.add(table) #Add the scroll pane to self panel. self.add(scrollPane) # LABEL PANEL labelPanel = JPanel(GridLayout(0, 1)) #Panel labelPanel = Panel( GridLayout(0,2)) #Panel labelPanel = Panel() # looks bad when resizing # Add label labelName = JLabel("Name") labelPanel.add(labelName) self.add(labelPanel) # BUTTON PANNEL buttonPanel = JPanel(GridLayout(0, 2)) #Panel buttonPanel = Panel() # Add text field for group name self.groupField = JTextField("new group") buttonPanel.add(self.groupField) # Button "Add Row" #JButton buttonAdd = AddButton() buttonPanel.add(AddButton(self)) buttonPanel.add(JLabel()) # empty JLabel to fill the blank buttonPanel.add(DeleteButton(self)) buttonPanel.add(ImportButton(self)) buttonPanel.add(ExportButton(self)) # Finally add button panel to main panel self.add(buttonPanel) def getNameField(self): """Read the current state of the group name""" return self.groupField.getText() def showTable(self): """ Add the main panel to a GenericDialog and show it """ gd = GenericDialog("Roi-group table") gd.addPanel(self) # Add current table instance to panel gd.addMessage("""If you use this plugin, please cite: Laurent Thomas. (2020, November 18). LauLauThom/RoiGroupTable: ImageJ/Fiji RoiGroup Table (Version 1.0) Zenodo. http://doi.org/10.5281/zenodo.4279049""") gd.addHelp(r"https://github.com/LauLauThom/RoiGroupTable") gd.showDialog() if gd.wasOKed(): # Update ImageJ Roi group names mapping stringGroup = self.tableModel.getGroupString() Roi.setGroupNames(stringGroup) def getTableModel(self): return self.tableModel
class LINAC_SetUp_Controller: def __init__(self,linac_wizard_document): #--- linac_wizard_document the parent document for all controllers self.linac_wizard_document = linac_wizard_document self.main_panel = JPanel(BorderLayout()) #----etched border etched_border = BorderFactory.createEtchedBorder() #------tables with Seq. names and button tables_panel = JPanel(BorderLayout()) tables_panel.setBorder(etched_border) self.first_table = JTable(WS_Records_Table_Model("First ")) self.last_table = JTable(WS_Records_Table_Model("Last ")) self.first_table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION) self.last_table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION) self.first_table.setFillsViewportHeight(true) self.last_table.setFillsViewportHeight(true) tables01_panel = JPanel(BorderLayout()) scrl_panel0 = JScrollPane(self.first_table) scrl_panel1 = JScrollPane(self.last_table) #tables01_panel.add(JScrollPane(self.first_table),BorderLayout.WEST) #tables01_panel.add(JScrollPane(self.last_table),BorderLayout.EAST) self.first_table.getCellRenderer(0,0).setHorizontalAlignment(JLabel.CENTER) self.last_table.getCellRenderer(0,0).setHorizontalAlignment(JLabel.CENTER) self.first_table.setPreferredScrollableViewportSize(Dimension(120,300)) self.last_table.setPreferredScrollableViewportSize(Dimension(120,300)) tables01_panel.add(scrl_panel0,BorderLayout.WEST) tables01_panel.add(scrl_panel1,BorderLayout.EAST) tables_button_panel = JPanel(BorderLayout()) tables_button_panel.add(tables01_panel,BorderLayout.WEST) seq_button_panel = JPanel(FlowLayout(FlowLayout.CENTER,5,5)) seq_set_button = JButton(" Set ComboSequence ") seq_button_panel.add(seq_set_button) tables_button_panel.add(seq_button_panel,BorderLayout.SOUTH) tables_panel.add(tables_button_panel,BorderLayout.NORTH) self.main_panel.add(tables_panel,BorderLayout.WEST) #--------central panel------- cav_amp_phase_button = JButton(" Read Cavities Amp.&Phases from Ext. File ") cav_info_from_scl_tuneup_button = JButton("Get SCL Cav. Amp.&Phases from SCL Long. TuneUp") new_accelerator_button = JButton(" Setup a New Accelerator File ") center_buttons_panel0 = JPanel(FlowLayout(FlowLayout.CENTER,5,5)) center_buttons_panel0.add(cav_amp_phase_button) center_buttons_panel1 = JPanel(FlowLayout(FlowLayout.CENTER,5,5)) center_buttons_panel1.add(cav_info_from_scl_tuneup_button) center_buttons_panel2 = JPanel(FlowLayout(FlowLayout.CENTER,5,5)) center_buttons_panel2.add(new_accelerator_button) center_buttons_panel = JPanel(GridLayout(3,1)) center_buttons_panel.add(center_buttons_panel0) center_buttons_panel.add(center_buttons_panel1) center_buttons_panel.add(center_buttons_panel2) center_panel = JPanel(BorderLayout()) center_panel.add(center_buttons_panel,BorderLayout.NORTH) self.main_panel.add(center_panel,BorderLayout.CENTER) #---------add actions listeners seq_set_button.addActionListener(Make_Sequence_Listener(self)) cav_amp_phase_button.addActionListener(Read_Cav_Amp_Phase_Dict_Listener(self)) cav_info_from_scl_tuneup_button.addActionListener(Get_SCL_Cav_Amp_Phase_Listener(self)) new_accelerator_button.addActionListener(SetUp_New_Accelerator_Listener(self)) def getMainPanel(self): return self.main_panel def setSelectedSequences(self,first_seq_name,last_seq_name): index0 = self.first_table.getModel().accSeqName_arr.index(first_seq_name) index1 = self.last_table.getModel().accSeqName_arr.index(last_seq_name) self.first_table.setRowSelectionInterval(index0,index0) self.last_table.setRowSelectionInterval(index1,index1) def getSelectedSequencesNames(self): first_table = self.first_table index0 = first_table.getSelectedRow() last_table = self.last_table index1 = last_table.getSelectedRow() if(index0 < 0 or index1 < 0): return [] seq_names = [] if(index0 == index1): seq_names.append(first_table.getModel().accSeqName_arr[index0]) else: if(index1 < index0): (index0,index1) = (index1,index0) for i in range(index0,index1+1): seq_names.append(first_table.getModel().accSeqName_arr[i]) return seq_names def setAccSeqNames(self,seq_names): accl = self.linac_wizard_document.getAccl() if(len(seq_names) == 0): accSeq = null self.linac_wizard_document.setAccSeq(accSeq) return lst = ArrayList() for seqName in seq_names: lst.add(accl.getSequence(seqName)) accSeq = AcceleratorSeqCombo("SEQUENCE", lst) self.linac_wizard_document.setAccSeq(accSeq) def getCavNameNodeDict(self,accl): rf_gaps = accl.getAllNodesWithQualifier(AndTypeQualifier().and((OrTypeQualifier()).or(RfGap.s_strType))) cavs = [] for rf_gap in rf_gaps: cav = rf_gap.getParent() if(cav not in cavs): cavs.append(cav) cav_name_node_dict = {} cav_names = [] for cav in cavs: cav_names.append(cav.getId()) cav_name_node_dict[cav.getId()] = cav return cav_name_node_dict
class LINAC_SetUp_Controller: def __init__(self,linac_wizard_document): #--- linac_wizard_document the parent document for all controllers self.linac_wizard_document = linac_wizard_document self.main_panel = JPanel(BorderLayout()) #----etched border etched_border = BorderFactory.createEtchedBorder() #------tables with Seq. names and button tables_panel = JPanel(BorderLayout()) tables_panel.setBorder(etched_border) self.first_table = JTable(WS_Records_Table_Model("First ")) self.last_table = JTable(WS_Records_Table_Model("Last ")) self.first_table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION) self.last_table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION) self.first_table.setFillsViewportHeight(true) self.last_table.setFillsViewportHeight(true) tables01_panel = JPanel(BorderLayout()) scrl_panel0 = JScrollPane(self.first_table) scrl_panel1 = JScrollPane(self.last_table) #tables01_panel.add(JScrollPane(self.first_table),BorderLayout.WEST) #tables01_panel.add(JScrollPane(self.last_table),BorderLayout.EAST) self.first_table.getCellRenderer(0,0).setHorizontalAlignment(JLabel.CENTER) self.last_table.getCellRenderer(0,0).setHorizontalAlignment(JLabel.CENTER) self.first_table.setPreferredScrollableViewportSize(Dimension(120,300)) self.last_table.setPreferredScrollableViewportSize(Dimension(120,300)) tables01_panel.add(scrl_panel0,BorderLayout.WEST) tables01_panel.add(scrl_panel1,BorderLayout.EAST) tables_button_panel = JPanel(BorderLayout()) tables_button_panel.add(tables01_panel,BorderLayout.WEST) seq_button_panel = JPanel(FlowLayout(FlowLayout.CENTER,5,5)) seq_set_button = JButton(" Set ComboSequence ") seq_button_panel.add(seq_set_button) tables_button_panel.add(seq_button_panel,BorderLayout.SOUTH) tables_panel.add(tables_button_panel,BorderLayout.NORTH) self.main_panel.add(tables_panel,BorderLayout.WEST) #--------central panel------- cav_amp_phase_button = JButton(" Read Cavities Amp.&Phases from Ext. File ") cav_info_from_scl_tuneup_button = JButton("Get SCL Cav. Amp.&Phases from SCL Long. TuneUp") new_accelerator_button = JButton(" Setup a New Accelerator File ") center_buttons_panel0 = JPanel(FlowLayout(FlowLayout.CENTER,5,5)) center_buttons_panel0.add(cav_amp_phase_button) center_buttons_panel1 = JPanel(FlowLayout(FlowLayout.CENTER,5,5)) center_buttons_panel1.add(cav_info_from_scl_tuneup_button) center_buttons_panel2 = JPanel(FlowLayout(FlowLayout.CENTER,5,5)) center_buttons_panel2.add(new_accelerator_button) center_buttons_panel = JPanel(GridLayout(3,1)) center_buttons_panel.add(center_buttons_panel0) center_buttons_panel.add(center_buttons_panel1) center_buttons_panel.add(center_buttons_panel2) center_panel = JPanel(BorderLayout()) center_panel.add(center_buttons_panel,BorderLayout.NORTH) self.main_panel.add(center_panel,BorderLayout.CENTER) #---------add actions listeners seq_set_button.addActionListener(Make_Sequence_Listener(self)) cav_amp_phase_button.addActionListener(Read_Cav_Amp_Phase_Dict_Listener(self)) cav_info_from_scl_tuneup_button.addActionListener(Get_SCL_Cav_Amp_Phase_Listener(self)) new_accelerator_button.addActionListener(SetUp_New_Accelerator_Listener(self)) def getMainPanel(self): return self.main_panel def setSelectedSequences(self,first_seq_name,last_seq_name): index0 = self.first_table.getModel().accSeqName_arr.index(first_seq_name) index1 = self.last_table.getModel().accSeqName_arr.index(last_seq_name) self.first_table.setRowSelectionInterval(index0,index0) self.last_table.setRowSelectionInterval(index1,index1) def getSelectedSequencesNames(self): first_table = self.first_table index0 = first_table.getSelectedRow() last_table = self.last_table index1 = last_table.getSelectedRow() if(index0 < 0 or index1 < 0): return [] seq_names = [] if(index0 == index1): seq_names.append(first_table.getModel().accSeqName_arr[index0]) else: if(index1 < index0): (index0,index1) = (index1,index0) for i in range(index0,index1+1): seq_names.append(first_table.getModel().accSeqName_arr[i]) return seq_names def setAccSeqNames(self,seq_names): accl = self.linac_wizard_document.getAccl() if(len(seq_names) == 0): accSeq = null self.linac_wizard_document.setAccSeq(accSeq) return lst = ArrayList() for seqName in seq_names: lst.add(accl.getSequence(seqName)) accSeq = AcceleratorSeqCombo("SEQUENCE", lst) self.linac_wizard_document.setAccSeq(accSeq) def getCavNameNodeDict(self,accl): rf_gaps = accl.getAllNodesWithQualifier(AndTypeQualifier().and((OrTypeQualifier()).or(RfGap.s_strType))) cavs = [] for rf_gap in rf_gaps: cav = rf_gap.getParent() if(cav not in cavs): cavs.append(cav) cav_name_node_dict = {} cav_names = [] for cav in cavs: cav_names.append(cav.getId()) cav_name_node_dict[cav.getId()] = cav return cav_name_node_dict