⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 inputpanel.java

📁 一个用于排队系统仿真的开源软件,有非常形象的图象仿真过程!
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
	 * correctly load observation from a specified log file.
	 *
	 * @param parent reference to current Wizard frame
	 */
	public InputPanel(WorkloadAnalysisWizard parent) {
		this.parent = parent;
		model = parent.getModel();
		help = parent.getHelp();
		initGUI();
	}

	/**
	 * Initialize GUI
	 */
	private void initGUI(){
		Box mainHorizontalBox = Box.createHorizontalBox();
		mainHorizontalBox.add(Box.createHorizontalStrut(5));

		Box centralVerticalBox = Box.createVerticalBox();
		mainHorizontalBox.add(centralVerticalBox);

		centralVerticalBox.add(Box.createVerticalStrut(5));
		JPanel componentsPanel = new JPanel(new BorderLayout());
		centralVerticalBox.add(componentsPanel);

		JPanel centralUpperPanel = new JPanel(new BorderLayout());

		JPanel buttonNewVariable = new JPanel(new BorderLayout());

		JPanel spinnerP = new JPanel(new FlowLayout(FlowLayout.RIGHT));
		numOfVars = new JSpinner(new SpinnerNumberModel(0,0,50,1));
		numOfVars.setMaximumSize(new Dimension(600,25));
		numOfVars.setToolTipText(SPINNER_VARIABLE);
		help.addHelp(numOfVars,SPINNER_VARIABLE);
		spinnerP.add(new JLabel("Number:"));
		spinnerP.add(numOfVars);
		numOfVars.addChangeListener(spinnerListener);
		JPanel addP = new JPanel(new FlowLayout(FlowLayout.RIGHT));
		addVar = new JButton(addNewVariable);
		help.addHelp(addVar,ADD_NEW_VARIABLE);
		addP.add(addVar);

		buttonNewVariable.add(spinnerP,BorderLayout.NORTH);
		buttonNewVariable.add(addP,BorderLayout.SOUTH);

		centralUpperPanel.add(buttonNewVariable,BorderLayout.EAST);
		centralUpperPanel.add(new JLabel(INPUT_DESCRIPTION), BorderLayout.CENTER);

		componentsPanel.add(centralUpperPanel, BorderLayout.NORTH);
		/********** TABLE **********/
		inputTable = new JWatVariableInputTable();
		inputTable.setToolTipText(INPUT_TABLE);
		help.addHelp(inputTable,INPUT_TABLE);
		inputTable.getTableHeader().setReorderingAllowed(false);
		inputTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
		inputTable.setModel(new JWatVariableInputTableModel());
		inputTable.addDeleteRowListener(new RowDeleteListener(){
			public void rowsDeletedEvent() {
				numOfVars.setValue(new Integer(inputTable.getRowCount()));
				// Set formatchooser to none
				formatchooser.setSelectedIndex(-1);
			}
		});

		JScrollPane inputTabSP = new JScrollPane(inputTable,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
		inputTabSP.setPreferredSize(new Dimension(550, 400));

		componentsPanel.add(inputTabSP, BorderLayout.CENTER);

		JPanel rightPanel = new JPanel(new BorderLayout());
		rightPanel.setMaximumSize(new Dimension(230,800));
		rightPanel.setPreferredSize(new Dimension(230,800));

		mainHorizontalBox.add(rightPanel);
		/********** INPUT FILE PANEL **********/
		inputPanel = new JPanel(new BorderLayout());
		inputPanel.setBorder(new TitledBorder(new EtchedBorder(EtchedBorder.LOWERED), "Input file"));
		inputPanel.add(new JLabel(LOAD_FILE_LABEL), BorderLayout.NORTH);
		inputPanel.add(filechooser, BorderLayout.SOUTH);
		help.addHelp(inputPanel,"Select input file");

		/** UPDATE 09/11/06 **/
		JPanel infoFile = new JPanel(new BorderLayout());
		infoFile.add(inputPanel,BorderLayout.NORTH);
		
		infoPanel = new JPanel(new BorderLayout());
		help.addHelp(infoPanel,PANEL_INFORMATION);
		infoPanel.setBorder(new TitledBorder(new EtchedBorder(EtchedBorder.LOWERED), "File information"));

		observationNumb = new JLabel(obsNumbString);
		fileName = new JLabel(obsFileName);
		infoPanel.add(observationNumb, BorderLayout.NORTH);
		infoPanel.add(fileName, BorderLayout.SOUTH);
		
		infoFile.add(infoPanel,BorderLayout.SOUTH);
		
		//rightPanel.add(inputPanel, BorderLayout.NORTH);
		rightPanel.add(infoFile,BorderLayout.NORTH);

		JPanel centerInputPanel = new JPanel(new BorderLayout());
		rightPanel.add(centerInputPanel, BorderLayout.CENTER);
		/********** FORMAT FILE PANEL **********/
		formatPanel = new JPanel(new BorderLayout());
		help.addHelp(formatPanel,"Select a format for current input file");

		JPanel test = new JPanel(new GridLayout(1,2));
		formatPanel.setBorder(new TitledBorder(new EtchedBorder(
				EtchedBorder.LOWERED), "File format"));
		test.add(new JLabel(LOAD_FORMAT_LABEL));
		saveNewFormat = new JButton(saveFormat);
		help.addHelp(saveNewFormat,"Save current defined format");
		test.add(saveNewFormat);

		formatPanel.add(test,BorderLayout.NORTH);
		formatPanel.add(formatchooser, BorderLayout.SOUTH);
		centerInputPanel.add(formatPanel, BorderLayout.NORTH);
		/********** SMAPLING PANEL **********/
		filterPanel = new JPanel(new BorderLayout());
		help.addHelp(filterPanel,"Specify the sampling method: Complete file, Random sampling or by interval");
		filterPanel.setBorder(new TitledBorder(new EtchedBorder(EtchedBorder.LOWERED), "Workload sampling method"));

		JPanel chooseFilterPanel = new JPanel(new BorderLayout());
		filterPanel.add(chooseFilterPanel, BorderLayout.NORTH);
		chooseFilterPanel.add(new JLabel(LOAD_FILTER_LABEL), BorderLayout.NORTH);

		optionFilterPanel = new JPanel(new BorderLayout());
		optionFilterPanel.setBorder(new TitledBorder(new EtchedBorder(EtchedBorder.LOWERED), "Loading size options"));

		chooseFilterPanel.add(filterchooser, BorderLayout.SOUTH);
		filterPanel.add(optionFilterPanel, BorderLayout.CENTER);
		centerInputPanel.add(filterPanel, BorderLayout.CENTER);
		/********** INFORMATION PANEL **********/
		JPanel southPanel = new JPanel(new BorderLayout());

		/*infoPanel = new JPanel(new BorderLayout());
		infoPanel.setBorder(new TitledBorder(new EtchedBorder(EtchedBorder.LOWERED), "File information"));
		southPanel.add(infoPanel,BorderLayout.NORTH);

		observationNumb = new JLabel(obsNumbString);
		fileName = new JLabel(obsFileName);
		infoPanel.add(observationNumb, BorderLayout.NORTH);
		infoPanel.add(fileName, BorderLayout.SOUTH);*/

		loadFileBtn = new JButton(loadFile);
		JPanel loadPanel = new JPanel();
		loadFileBtn.setPreferredSize(new Dimension((int)(BUTTONSIZE*4.5),(int)(BUTTONSIZE*0.8)));
		loadFileBtn.setBackground(Color.RED);
		loadPanel.add(loadFileBtn);

		southPanel.add(loadPanel,BorderLayout.SOUTH);
		centerInputPanel.add(southPanel,BorderLayout.SOUTH);
		/********** INIT COMBOBOXES ****************/
		initComboInputPanel();
		initComboFormatPanel();
		initComboFilterPanel();

		this.setLayout(new GridLayout(1, 1));
		this.add(mainHorizontalBox);
	}

	/**
	 * Returns the name of the pane
	 *
	 * @see java.awt.Component#getName()
	 */
	public String getName() {
		return "Input";
	}

	private JFileChooser file = new JFileChooser();

	/**
	 * Sets up combobox of file with format defined
	 */
	private void initComboInputPanel() {
//		File[] name;
//		File directory = new File(absolutePath + "FileSaves");
		file.setCurrentDirectory(new File("."));
		
		filechooser.setToolTipText(COMBO_FILE_INPUT);
		//filechooser.addItem(browseInputPanelText);
//		try {
//			if(directory.isDirectory()){
//				name = directory.listFiles();
//				for(int i = 0; i < name.length; i++){
//					filechooser.addItem(name[i].getCanonicalFile().getName());
//				}
//			}
//		}catch (IOException e) { e.printStackTrace(); }
		filechooser.setSelectedIndex(-1);

		filechooser.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent event) {
				String choice = (String) ((JComboBox) event.getSource()).getSelectedItem();
				if (choice != null && choice.equals(browseInputPanelText)) {
					//JFileChooser file = new JFileChooser();
					//file.setCurrentDirectory(new File("."));
					if(file.showOpenDialog(InputPanel.this) == JFileChooser.APPROVE_OPTION){
						nameFile = file.getSelectedFile();
						if(!nameFile.exists()){
							JOptionPane.showMessageDialog(InputPanel.this,"File does not exists","Error",JOptionPane.WARNING_MESSAGE);
							return;
						}
						try {
							obsNumb = Loader.calcNumOfObs((nameFile.getAbsolutePath()));
						} catch (Exception e) {
							e.printStackTrace();
						}
						boolean exist = false;
						//controllo se esiste gia' la voce selezionata
						for(int i = 1; i < filechooser.getModel().getSize();i++){
							if(((String)filechooser.getModel().getElementAt(i)).equals(file.getSelectedFile().getAbsolutePath())){
								exist = true;
								break;
							}
						}
						if(!exist){
							filechooser.insertItemAt(file.getSelectedFile().getAbsolutePath(),filechooser.getItemCount());
							filechooser.setSelectedIndex(filechooser.getItemCount()-1);
						}else{
							filechooser.setSelectedItem(file.getSelectedFile().getAbsolutePath());
						}
						//Update information
						observationNumb.setText(obsNumbString + obsNumb );
						fileName.setText(obsFileName + file.getSelectedFile().getName());
						fileName.setToolTipText(nameFile.getName());
					}else{
						filechooser.setSelectedIndex(-1);
					}
				}else{
					if(choice != null){
						if(!choice.equals("")){
							if(choice.indexOf("\\") == -1){
								nameFile = new File(absolutePath + "FileSaves\\" +choice);
								try {
									obsNumb = Loader.calcNumOfObs((nameFile.getAbsolutePath()));
								} catch (Exception e) {
									e.printStackTrace();
								}
							}else{
								nameFile = new File(choice);
								try {
									obsNumb = Loader.calcNumOfObs((nameFile.getAbsolutePath()));
								} catch (Exception e) {
									e.printStackTrace();
								}
							}
							//Update information
							observationNumb.setText(obsNumbString + obsNumb );
							fileName.setText(obsFileName + nameFile.getName());
							fileName.setToolTipText(nameFile.getName());
						}else{
							filechooser.setSelectedIndex(-1);
							observationNumb.setText(obsNumbString);
							fileName.setText(obsFileName);
						}
					}else{
						observationNumb.setText(obsNumbString);
						fileName.setText(obsFileName);
					}
				}
			}
		});
	}

	/**
	 * Sets up combobox format defined
	 */
	private void initComboFormatPanel() {
		formatchooser.setToolTipText(COMBO_FORMAT_INPUT);
		refreshComboFormatPanel();
		addListenersComboFormatPanel();
	}

	private void refreshComboFormatPanel(){
		File[] name;
		File directory = new File(absolutePath + "jwatFormats");
		formatchooser.removeAllItems();
		//UPDATE 5/11/06: + rimozione e riabilitazione listener per combo per evitare update su reload combo
		ActionListener[] l = (ActionListener[]) formatchooser.getListeners(ActionListener.class);
		if(l.length != 0) formatchooser.removeActionListener(l[0]);
		try {
			if(directory.isDirectory()){
				name = directory.listFiles();
				for(int i = 0; i < name.length; i++){
					if(name[i].getName().indexOf(".jwatformat")!= -1){
						formatchooser.addItem(name[i].getCanonicalFile().getName());
					}
				}
			}
		}catch (IOException e) { e.printStackTrace(); }
		//UPDATE 5/11/06: + rimozione e riabilitazione listener per combo per evitare update su reload combo
		if(l.length !=0) formatchooser.addActionListener(l[0]);
		formatchooser.setSelectedIndex(-1);
	}
	private void addListenersComboFormatPanel(){
		formatchooser.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent event) {
				String choice = (String) ((JComboBox) event.getSource()).getSelectedItem();
				if(choice != null){
					((JWatVariableInputTableModel) inputTable.getModel()).clearTable();
					FormatFileReader form = new FormatFileReader(absolutePath + "jwatFormats\\" + choice);
					for(int i = 0;i < form.getNumVars();i++){
						String tipo = "";
						switch(form.getType()){
						case Parameter.NUMBER: tipo = "Numeric";
						break;
						case Parameter.STRING: tipo = "String";
						break;
						case Parameter.DATE: tipo = "Date";
						break;
						}
						((JWatVariableInputTableModel) inputTable.getModel()).
						addNewRow(form.getName(),tipo,form.getComment(),form.getDelimiters(),form.getRegExpr(),form.getDefaults(),form.getReplace());
						form.next();
					}
					inputTable.tableChanged(new TableModelEvent(inputTable.getModel()));
					numOfVars.setValue(new Integer(form.getNumVars()));
				}
			}
		});
	}

	/**
	 * Sets up combobox filter defined
	 */
	private void initComboFilterPanel() {
		filterchooser.addItem(FILTER_TEXT_COMPLETE);
		filterchooser.addItem(FILTER_TEXT_RANDOM);
		filterchooser.addItem(FILTER_TEXT_INTERVAL);
		filterchooser.setToolTipText(COMBO_FILTER_INPUT);
		
		createIntervalOptionPanel();
		createRandomOptionPanel();

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -