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

📄 htmleditor.java

📁 Memoranda( 从前以jNotes2而闻名) 是一个日志管理和个人项目管理工具
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
		 * editor.getKeymap().addActionForKeyStroke(		 * KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, KeyEvent.CTRL_MASK),		 */		editor.getKeymap().removeKeyStrokeBinding(			KeyStroke.getKeyStroke(KeyEvent.VK_C, KeyEvent.CTRL_MASK));		editor.getKeymap().removeKeyStrokeBinding(			KeyStroke.getKeyStroke(KeyEvent.VK_V, KeyEvent.CTRL_MASK));		editor.getKeymap().removeKeyStrokeBinding(			KeyStroke.getKeyStroke(KeyEvent.VK_X, KeyEvent.CTRL_MASK));		editor.getKeymap().addActionForKeyStroke(			KeyStroke.getKeyStroke(KeyEvent.VK_C, KeyEvent.CTRL_MASK),			copyAction);		editor.getKeymap().addActionForKeyStroke(			KeyStroke.getKeyStroke(KeyEvent.VK_V, KeyEvent.CTRL_MASK),			pasteAction);		editor.getKeymap().addActionForKeyStroke(			KeyStroke.getKeyStroke(				KeyEvent.VK_V,				KeyEvent.CTRL_MASK + KeyEvent.SHIFT_MASK),			stylePasteAction);		editor.getKeymap().addActionForKeyStroke(			KeyStroke.getKeyStroke(KeyEvent.VK_X, KeyEvent.CTRL_MASK),			cutAction);		editor.getKeymap().addActionForKeyStroke(			KeyStroke.getKeyStroke(KeyEvent.VK_F, KeyEvent.CTRL_MASK),			findAction);		/*		 * editor.getKeymap().addActionForKeyStroke(		 * KeyStroke.getKeyStroke(KeyEvent.VK_EQUALS, KeyEvent.CTRL_MASK),		 * zoomInAction); editor.getKeymap().addActionForKeyStroke(		 * KeyStroke.getKeyStroke(KeyEvent.VK_MINUS, KeyEvent.CTRL_MASK),		 */		/* POPUP MENUs */		/*		 * jMenuItemUndo.setAction(undoAction); jMenuItemUndo.setText("Undo");		 * jMenuItemUndo.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Z,		 * KeyEvent.CTRL_MASK)); jMenuItemUndo.setIcon( new		 * ImageIcon(net.sf.memoranda.ui.htmleditor.AppFrame.class.getResource("resources/icons/undo16.png")));		 * 		 * jMenuItemRedo.setAction(redoAction); jMenuItemRedo.setText("Redo");		 * jMenuItemRedo.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Z,		 * KeyEvent.CTRL_MASK + KeyEvent.SHIFT_MASK)); jMenuItemRedo.setIcon(		 * new		 * ImageIcon(net.sf.memoranda.ui.htmleditor.AppFrame.class.getResource("resources/icons/redo16.png")));		 * 		 * jMenuItemCut.setAction(cutAction); jMenuItemCut.setText("Cut");		 * jMenuItemCut.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,		 * KeyEvent.CTRL_MASK)); jMenuItemCut.setIcon( new		 * ImageIcon(net.sf.memoranda.ui.htmleditor.AppFrame.class.getResource("resources/icons/cut.png")));		 * 		 * jMenuItemCopy.setAction(copyAction); jMenuItemCopy.setText("Copy");		 * jMenuItemCopy.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,		 * KeyEvent.CTRL_MASK)); jMenuItemCopy.setIcon( new		 * ImageIcon(net.sf.memoranda.ui.htmleditor.AppFrame.class.getResource("resources/icons/copy.png")));		 * 		 * jMenuItemPaste.setAction(pasteAction);		 * jMenuItemPaste.setText("Paste");		 * jMenuItemPaste.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V,		 * KeyEvent.CTRL_MASK)); jMenuItemPaste.setIcon( new		 * ImageIcon(net.sf.memoranda.ui.htmleditor.AppFrame.class.getResource("resources/icons/paste.png")));		 * 		 * jMenuItemProp.setAction(propsAction);		 * jMenuItemProp.setText("Properties"); jMenuItemProp.setIcon(		 */		/*		 * defaultPopupMenu.add(jMenuItemUndo);		 * defaultPopupMenu.add(jMenuItemRedo);		 * defaultPopupMenu.addSeparator(); defaultPopupMenu.add(jMenuItemCut);		 * defaultPopupMenu.add(jMenuItemCopy);		 * defaultPopupMenu.add(jMenuItemPaste);		 * defaultPopupMenu.addSeparator();		 */		/*		 * jMenuItemInsCell.setAction(new InsertTableCellAction());		 * jMenuItemInsCell.setText(Local.getString("Insert table cell"));		 * 		 * jMenuItemInsRow.setAction(new InsertTableRowAction());		 */		/*		 * tablePopupMenu.add(jMenuItemUndo);		 * tablePopupMenu.add(jMenuItemRedo); tablePopupMenu.addSeparator();		 * tablePopupMenu.add(jMenuItemCut); tablePopupMenu.add(jMenuItemCopy);		 * tablePopupMenu.add(jMenuItemPaste); tablePopupMenu.addSeparator();		 * tablePopupMenu.add(jMenuItemInsCell);		 * tablePopupMenu.add(jMenuItemInsRow); tablePopupMenu.addSeparator();		 */		editor.addMouseListener(new PopupListener());		document.getStyleSheet().setBaseFontSize(currentFontSize);		this.requestFocusInWindow();	}	class PopupListener extends MouseAdapter {		public void mousePressed(MouseEvent e) {			maybeShowPopup(e);		}		public void mouseReleased(MouseEvent e) {			maybeShowPopup(e);		}		private void maybeShowPopup(MouseEvent e) {			if (e.isPopupTrigger()) {				JPopupMenu popupMenu = new JPopupMenu();				popupMenu.setFocusable(false);				popupMenu.add(jMenuItemUndo);				popupMenu.add(jMenuItemRedo);				popupMenu.addSeparator();				popupMenu.add(jMenuItemCut);				popupMenu.add(jMenuItemCopy);				popupMenu.add(jMenuItemPaste);				popupMenu.addSeparator();				if (jMenuItemInsCell.getAction().isEnabled()) {					popupMenu.add(jMenuItemInsCell);					jMenuItemInsCell.setEnabled(true);					popupMenu.add(jMenuItemInsRow);					jMenuItemInsRow.setEnabled(true);					popupMenu.addSeparator();				}				popupMenu.add(jMenuItemProp);				popupMenu.show(e.getComponent(), e.getX(), e.getY());			}		}	}	/**	 * Resets the undo manager.	 */	protected void resetUndoManager() {		undo.discardAllEdits();		undoAction.update();		redoAction.update();	}	class UndoHandler implements UndoableEditListener {		/**		 * Messaged when the Document has created an edit, the edit is added to		 * <code>undo</code>, an instance of UndoManager.		 */		public void undoableEditHappened(UndoableEditEvent e) {			undo.addEdit(e.getEdit());			undoAction.update();			redoAction.update();		}	}	class UndoAction extends AbstractAction {		public UndoAction() {			super(Local.getString("Undo"));			setEnabled(false);			putValue(				Action.SMALL_ICON,				new ImageIcon(cl.getResource("resources/icons/undo16.png")));			putValue(				Action.ACCELERATOR_KEY,				KeyStroke.getKeyStroke(KeyEvent.VK_Z, KeyEvent.CTRL_MASK));		}		public void actionPerformed(ActionEvent e) {			try {				undo.undo();			} catch (CannotUndoException ex) {				System.out.println("Unable to undo: " + ex);				ex.printStackTrace();			}			update();			redoAction.update();		}		protected void update() {			if (undo.canUndo()) {				setEnabled(true);				putValue(					Action.SHORT_DESCRIPTION,					undo.getUndoPresentationName());			} else {				setEnabled(false);				putValue(Action.SHORT_DESCRIPTION, Local.getString("Undo"));			}		}	}	class RedoAction extends AbstractAction {		public RedoAction() {			super(Local.getString("Redo"));			setEnabled(false);			putValue(				Action.SMALL_ICON,				new ImageIcon(cl.getResource("resources/icons/redo16.png")));			putValue(				Action.ACCELERATOR_KEY,				KeyStroke.getKeyStroke(					KeyEvent.VK_Z,					KeyEvent.CTRL_MASK + KeyEvent.SHIFT_MASK));		}		public void actionPerformed(ActionEvent e) {			try {				undo.redo();			} catch (CannotRedoException ex) {				System.out.println("Unable to redo: " + ex);				ex.printStackTrace();			}			update();			undoAction.update();		}		protected void update() {			if (undo.canRedo()) {				setEnabled(true);				putValue(					Action.SHORT_DESCRIPTION,					undo.getRedoPresentationName());			} else {				setEnabled(false);				putValue(Action.SHORT_DESCRIPTION, Local.getString("Redo"));			}		}	}	public class BlockAction extends AbstractAction {		int _type;		public BlockAction(int type, String name) {			super(name);			_type = type;		}		public void actionPerformed(ActionEvent e) {			blockCB.setSelectedIndex(_type);		}	}	public class InlineAction extends AbstractAction {		int _type;		public InlineAction(int type, String name) {			super(name);			_type = type;		}		public void actionPerformed(ActionEvent e) {			inlineCB.setSelectedIndex(_type);		}	}	public String getContent() {		try {			return editor.getText();		} catch (Exception e) {			e.printStackTrace();			return "";		}	}	public void boldActionB_actionPerformed(ActionEvent e) {		if (!bold) {			boldActionB.setBorder(border2);		} else {			boldActionB.setBorder(border1);		}		bold = !bold;		boldActionB.setBorderPainted(bold);		/*		 * SimpleAttributeSet attrs = new SimpleAttributeSet();		 * attrs.addAttribute(StyleConstants.Bold, new Boolean(bold));		 */		new StyledEditorKit.BoldAction().actionPerformed(e);	}	public void italicActionB_actionPerformed(ActionEvent e) {		if (!italic) {			italicActionB.setBorder(border2);		} else {			italicActionB.setBorder(border1);		}		italic = !italic;		italicActionB.setBorderPainted(italic);		/*		 * SimpleAttributeSet attrs = new SimpleAttributeSet();		 * attrs.addAttribute(StyleConstants.Italic, new Boolean(italic));		 */		new StyledEditorKit.ItalicAction().actionPerformed(e);	}	public void underActionB_actionPerformed(ActionEvent e) {		if (!under) {			underActionB.setBorder(border2);		} else {			underActionB.setBorder(border1);		}		under = !under;		underActionB.setBorderPainted(under);		/*		 * SimpleAttributeSet attrs = new SimpleAttributeSet();		 * attrs.addAttribute(StyleConstants.Underline, new Boolean(under));		 */		new StyledEditorKit.UnderlineAction().actionPerformed(e);	}	void editor_caretUpdate(CaretEvent e) {		currentCaret = e.getDot();		/*		 * currentParaElement =		 * document.getParagraphElement(editor.getCaretPosition());		 * currentTagName = currentParaElement.getName().toUpperCase();		 */		AttributeSet charattrs = null;		//System.out.print(editor.getCaretPosition()+" :		// "+document.getCharacterElement(editor.getCaretPosition()).getName()+"		// -> ");		if (editor.getCaretPosition() > 0)			try {				charattrs =					document						.getCharacterElement(editor.getCaretPosition() - 1)						.getAttributes();			} catch (Exception ex) {				ex.printStackTrace();			} else			charattrs =				document					.getCharacterElement(editor.getCaretPosition())					.getAttributes();		if (charattrs			.containsAttribute(StyleConstants.Bold, new Boolean(true))) {			boldActionB.setBorder(border2);			bold = true;		} else if (bold) {			boldActionB.setBorder(border1);			bold = false;		}		boldActionB.setBorderPainted(bold);		if (charattrs			.containsAttribute(StyleConstants.Italic, new Boolean(true))) {			italicActionB.setBorder(border2);			italic = true;		} else if (italic) {			italicActionB.setBorder(border1);			italic = false;		}		italicActionB.setBorderPainted(italic);		if (charattrs			.containsAttribute(StyleConstants.Underline, new Boolean(true))) {			underActionB.setBorder(border2);			under = true;		} else if (under) {			underActionB.setBorder(border1);			under = false;		}		underActionB.setBorderPainted(under);		/*		 * String iName = document		 * .getCharacterElement(editor.getCaretPosition()) .getAttributes()		 * .getAttribute(StyleConstants.NameAttribute) .toString()		 */		inlineCBEventsLock = true;		inlineCB.setEnabled(!charattrs.isDefined(HTML.Tag.A));		if (charattrs.isDefined(HTML.Tag.EM))			inlineCB.setSelectedIndex(I_EM);		else if (charattrs.isDefined(HTML.Tag.STRONG))			inlineCB.setSelectedIndex(I_STRONG);		else if (			(charattrs.isDefined(HTML.Tag.CODE))				|| (charattrs.isDefined(HTML.Tag.SAMP)))			inlineCB.setSelectedIndex(I_CODE);		else if (charattrs.isDefined(HTML.Tag.SUP))			inlineCB.setSelectedIndex(I_SUPERSCRIPT);		else if (charattrs.isDefined(HTML.Tag.SUB))			inlineCB.setSelectedIndex(I_SUBSCRIPT);		else if (charattrs.isDefined(HTML.Tag.CITE))			inlineCB.setSelectedIndex(I_CITE);		else if (charattrs.isDefined(HTML.Tag.FONT))			inlineCB.setSelectedIndex(I_CUSTOM);		else			inlineCB.setSelectedIndex(I_NORMAL);		inlineCBEventsLock = false;		Element pEl = document.getParagraphElement(editor.getCaretPosition());		String pName = pEl.getName().toUpperCase();		blockCBEventsLock = true;		if (pName.equals("P-IMPLIED"))			pName = pEl.getParentElement().getName().toUpperCase();		if (pName.equals("P"))			blockCB.setSelectedIndex(T_P);		else if (pName.equals("H1"))			blockCB.setSelectedIndex(T_H1);		else if (pName.equals("H2"))			blockCB.setSelectedIndex(T_H2);		else if (pName.equals("H3"))			blockCB.setSelectedIndex(T_H3);		else if (pName.equals("H4"))			blockCB.setSelectedIndex(T_H4);		else if (pName.equals("H5"))			blockCB.setSelectedIndex(T_H5);		else if (pName.equals("H6"))			blockCB.setSelectedIndex(T_H6);		else if (pName.equals("PRE"))			blockCB.setSelectedIndex(T_PRE);		/*		 * else if (pName.equals("ADDRESS"))		 */		else if (pName.equals("BLOCKQUOTE"))			blockCB.setSelectedIndex(T_BLOCKQ);		blockCBEventsLock = false;		this.insertTableCellAction.update();		this.insertTableRowAction.update();		/*		 * String ppName =		 * document.getParagraphElement(editor.getCaretPosition()).getParentElement().getName().toUpperCase();		 * System.out.print(ppName+"->"+pName+":");		 * 		 * AbstractDocument.BranchElement pEl =		 * (AbstractDocument.BranchElement)document.getParagraphElement(editor.getCaretPosition());		 * Element el = pEl.positionToElement(editor.getCaretPosition());		 * System.out.println(el.getAttributes().getAttribute(StyleConstants.NameAttribute)+",		 * "+pEl.getElementCount()+"/"+el.getElementCount());		 */

⌨️ 快捷键说明

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