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

📄 optionsforprojectsdialog.java

📁 emacs的一个非常有用的插件,叫xrefactory,可以实现source insight里的那种函数跳转.和cscope(跳回来不方便)配合使用,非常的不错.
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
package com.xrefactory.jedit;import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.io.*;import com.xrefactory.jedit.Options.*;import org.gjt.sp.jedit.*;public class OptionsForProjectsDialog extends JDialog {	public static class OptionsForProjectsPanel extends JPanel {		class OptionsForProjectsNoFilePanel extends JPanel {			class GraphicOption extends  Container {				class ButtonBrowse extends JButton implements ActionListener {					String browseMode;					ButtonBrowse() {						super("Browse"); 						setToolTipText("Browse");						setFont(s.optionsBrowseButtonFont);						addActionListener(this);					}					public void actionPerformed( ActionEvent e) {						String mm = browseMode.toLowerCase();						if (mm.equals("d")	|| mm.equals("f") || mm.equals("fd")) {							// file / directory chooser							int mode;							JFileChooser fc = new JFileChooser();							if (mm.equals("d")) mode = JFileChooser.DIRECTORIES_ONLY;							else if (mm.equals("f")) mode = JFileChooser.FILES_ONLY;							else mode = JFileChooser.FILES_AND_DIRECTORIES;							fc.setFileSelectionMode(mode);							fc.setApproveButtonText("Select");							//OptionsPanel.this.add(fc);							int i = fc.showOpenDialog(s.getParentDialog(this));							tf.setText(fc.getSelectedFile().getPath());						} else if (mm.equals("p")) {							// path chooser							PathSelectionDialog np = new PathSelectionDialog(								s.getParentDialog(this), tf.getText());							tf.setText(np.resultString);						}						updateAndSelectCheckBox();					}				}				class checkBoxActionListener implements ActionListener {					public void actionPerformed(ActionEvent e) {						checkBoxChanged();					}				}				class TextFieldKeyListener implements KeyListener {					public void keyPressed(KeyEvent e) {						if (e.getKeyCode() == KeyEvent.VK_ENTER) {							updateAndSelectCheckBox();							e.consume();						}					}					public void keyReleased(KeyEvent e) {}					public void keyTyped(KeyEvent e) {}				}				class TextFieldFocusListener implements FocusListener {					public void focusGained(FocusEvent e) {					}					public void focusLost(FocusEvent e) {						updateAndSelectCheckBox();					}				}				// ------------------------ GraphicOption ------------------				Option 			option;				JCheckBox		jb;				JTextField		tf;				ButtonBrowse 	bb;				void checkBoxChanged() {					if (jb.isSelected()) {						options.add(option);					} else {						options.delete(option);					}					updateStringOption();				}				void updateAndSelectCheckBox() {					int index;					String val = tf.getText();					if (jb.isSelected()) {						index = options.delete(option);						option.fulltext[1] = tf.getText();						if (val.equals("")) {							jb.setSelected(false);						} else {							options.add(option, index);						}						updateStringOption();					} else {						option.fulltext[1] = val;						if (! val.equals("")) {							jb.setSelected(true);							checkBoxChanged();						}					}					update(val);					if (! jb.isSelected() && !val.equals("")) {						jb.setSelected(true);						checkBoxChanged();					}				}				public void update(String newText) {					int index;					if (jb.isSelected()) {						index = options.delete(option);						option.fulltext[1] = tf.getText();						options.add(option, index);						updateStringOption();					} else {						option.fulltext[1] = tf.getText();					}				}				GraphicOption(OptionDescription opt, Option option) {					if (option==null) {						this.option = new Option(opt, "");					} else {						this.option = option;					}					setLayout(new BoxLayout(this, BoxLayout.X_AXIS));					//&jb = new JCheckBox(opt.name + "  ( " + opt.shortDescription + " )");					if (opt.arity==1) {						jb = new JCheckBox(opt.shortDescription);						jb.addActionListener(new checkBoxActionListener());						add(jb);					} else {						jb = new JCheckBox();						add(new JLabel(opt.shortDescription));					}					if (option!=null) jb.setSelected(true);					if (opt.arity>1) {						// just for now it should be O.K.						s.assertt(opt.arity == 2);						String val;						tf = new JTextField(this.option.fulltext[1]);						tf.setPreferredSize(new Dimension(300,20));						add(tf);						tf.addFocusListener(new TextFieldFocusListener());						tf.addKeyListener(new TextFieldKeyListener());					}					if (opt.fileSystemBrowseOptions!=null) {						bb = new ButtonBrowse();						bb.browseMode = opt.fileSystemBrowseOptions;						add(bb);					}				}			}			OptionsForProjectsNoFilePanel(Options options, int kind) {				int y = -1;				setLayout(new GridBagLayout());				y++;				for(int i=0; i<Options.allOptions.length; i++) {					OptionDescription od = Options.allOptions[i];					if (od.interactive && (kind==od.kind || od.kind==Options.OPT_BOTH)) {						Option oo = null;						for(int j=0; j<options.optioni; j++) {							Option o = options.option[j];							if (o.option == od) {								oo = o;							}						}						GraphicOption go = new GraphicOption(od, oo);						s.addGbcComponent(this, 0, y++, 1, 1, 10000, 10000, 										  GridBagConstraints.HORIZONTAL,										  go);					}				}			}		}		class StringOptionFocusListener implements FocusListener {			public void focusGained(FocusEvent e) {			}			public void focusLost(FocusEvent e) {				updateOptionsFromOptionsString();				updateStringOption();			}		}		class StringOptionKeyListener implements KeyListener {			public void keyPressed(KeyEvent e) {				if (e.getKeyCode() == KeyEvent.VK_ENTER) {					stringOption.insert("\n", stringOption.getCaretPosition());					updateOptionsFromOptionsString();					e.consume();				}			}			public void keyReleased(KeyEvent e) {				if (e.getKeyCode() == KeyEvent.VK_ENTER) {					e.consume();				}			}			public void keyTyped(KeyEvent e) {}		}		// ------------------------ OptionPanel ------------------		boolean								displayString;		Options								options;		int									kind;				JTextArea 							stringOption;		OptionsForProjectsNoFilePanel		optionsPanel;		public void addOptionsPanel() {			s.addGbcComponent(this, 0, 0, 1, 1, 10000, 10000, 							  GridBagConstraints.BOTH,							  optionsPanel);		}		void updateStringOption() {			int cp = stringOption.getCaretPosition();			stringOption.setText(options.toString());			stringOption.setCaretPosition(cp);		}		public void updateOptionsFromOptionsString() {			try {				Options.OptionParser pp = new Options.OptionParser(stringOption.getText());				pp.reParseSingleProject(options);				OptionsForProjectsPanel.this.remove(optionsPanel);				optionsPanel = new OptionsForProjectsNoFilePanel(options, kind);				addOptionsPanel();				OptionsForProjectsPanel.this.revalidate();			} catch (Exception ee) {				JOptionPane.showMessageDialog(s.getParentDialog(stringOption), ee, "Xrefactory Error", JOptionPane.ERROR_MESSAGE);				if (s.debug) ee.printStackTrace(System.err);			}		}		public OptionsForProjectsPanel(Options options, int kind, boolean displayString) {			int y = -1;			this.displayString = displayString;			this.options = options;			this.kind = kind;			optionsPanel = new OptionsForProjectsNoFilePanel(options, kind);			stringOption = new JTextArea(options.toString());			stringOption.addFocusListener(new StringOptionFocusListener());			stringOption.addKeyListener(new StringOptionKeyListener());			setLayout(new GridBagLayout());			addOptionsPanel();			Component disp;			if (displayString) {				JScrollPane sp = new JScrollPane(stringOption);				sp.setMinimumSize(new Dimension(100,80));				sp.setPreferredSize(new Dimension(300,200));				disp = sp;			} else {				disp = new JPanel();			}			s.addGbcComponent(this, 0, 1, 1, 1, 100, 5000, 							  GridBagConstraints.BOTH,							  disp);		}	}	public static class ProjectOptionsPanel extends JPanel {		void saveProjectSettings() {			checkConfigurationFile();			if (checkOptionsConsistency()) {				Options.saveOptions(projects, s.configurationFile);				checkProjectsModifications();				originalProjects = crOptionsArrayCopy(projects);				Opt.setActiveProject((String)activeProject.getSelectedItem());			}		}		class ButtonNewProject extends JButton implements ActionListener {			ButtonNewProject() {super("Add"); addActionListener(this);}			public void actionPerformed(ActionEvent e) {				addNewProject(s.getProbableParent(this));			}		}		class ButtonDelProject extends JButton implements ActionListener {			ButtonDelProject() {super("Del"); addActionListener(this);}			public void actionPerformed(ActionEvent e) {				int i = projectsPanel.getSelectedIndex();				if (i==0) {					JOptionPane.showMessageDialog(s.getProbableParent(this), "This project can not be deleted");				} else {					int confirm = JOptionPane.YES_OPTION;					confirm = JOptionPane.showConfirmDialog(						s.getProbableParent(this), 						"Really delete project "+projectsPanel.getTitleAt(projectsPanel.getSelectedIndex()), "Confirmation", 						JOptionPane.YES_NO_OPTION,						JOptionPane.QUESTION_MESSAGE);					if (confirm == JOptionPane.YES_OPTION) {						if (i>0) {							Options[] no = new Options[projects.length-1];							s.arrayCopyDelElement(projects, no, i);							projects = no;							if (activeProject.getSelectedIndex()==i) {								// removing active project								activeProject.setSelectedIndex(0);							}							activeProject.removeItemAt(i);							projectsPanel.removeTabAt(i);

⌨️ 快捷键说明

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