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

📄 registers.java

📁 Linux下面最好用的程序、文本编辑工具之一。
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
		StringBuffer buf = new StringBuffer();		for(int i = 0; i < registers.length; i++)		{			if(registers[i] != null)			{				if(buf.length() != 0)					buf.append(' ');				buf.append((char)i);			}		}		if(buf.length() == 0)			return jEdit.getProperty("view.status.no-registers");		else			return buf.toString();	} //}}}	//{{{ saveRegisters() method	public static void saveRegisters()	{		if(!loaded || !modified)			return;		Log.log(Log.MESSAGE,Registers.class,"Saving registers.xml");		File file1 = new File(MiscUtilities.constructPath(			jEdit.getSettingsDirectory(), "#registers.xml#save#"));		File file2 = new File(MiscUtilities.constructPath(			jEdit.getSettingsDirectory(), "registers.xml"));		if(file2.exists() && file2.lastModified() != registersModTime)		{			Log.log(Log.WARNING,Registers.class,file2 + " changed"				+ " on disk; will not save registers");			return;		}		jEdit.backupSettingsFile(file2);		String lineSep = System.getProperty("line.separator");		BufferedWriter out = null;		boolean ok = false;		try		{			out = new BufferedWriter(new FileWriter(file1));			out.write("<?xml version=\"1.0\"?>");			out.write(lineSep);			out.write("<!DOCTYPE REGISTERS SYSTEM \"registers.dtd\">");			out.write(lineSep);			out.write("<REGISTERS>");			out.write(lineSep);			Register[] registers = getRegisters();			for(int i = 0; i < registers.length; i++)			{				Register register = registers[i];				if(register == null || i == '$' || i == '%')					continue;				out.write("<REGISTER NAME=\"");				if(i == '"')					out.write("&quot;");				else					out.write((char)i);				out.write("\">");				out.write(MiscUtilities.charsToEntities(					register.toString()));				out.write("</REGISTER>");				out.write(lineSep);			}			out.write("</REGISTERS>");			out.write(lineSep);			ok = true;		}		catch(Exception e)		{			Log.log(Log.ERROR,Registers.class,e);		}		finally		{			try			{				if(out != null)					out.close();			}			catch(IOException e)			{			}		}		if(ok)		{			/* to avoid data loss, only do this if the above			 * completed successfully */			file2.delete();			file1.renameTo(file2);		}		registersModTime = file2.lastModified();		modified = false;	} //}}}	//{{{ Private members	private static Register[] registers;	private static long registersModTime;	private static boolean loaded, loading, modified;	private Registers() {}	static	{		registers = new Register[256];		registers['$'] = new ClipboardRegister(Toolkit			.getDefaultToolkit().getSystemClipboard());	}	//{{{ loadRegisters() method	private static void loadRegisters()	{		String settingsDirectory = jEdit.getSettingsDirectory();		if(settingsDirectory == null)			return;		File registerFile = new File(MiscUtilities.constructPath(			jEdit.getSettingsDirectory(),"registers.xml"));		if(!registerFile.exists())			return;		registersModTime = registerFile.lastModified();		loaded = true;		Log.log(Log.MESSAGE,jEdit.class,"Loading registers.xml");		RegistersHandler handler = new RegistersHandler();		XmlParser parser = new XmlParser();		parser.setHandler(handler);		Reader in = null;		try		{			loading = true;			in = new BufferedReader(new FileReader(registerFile));			parser.parse(null, null, in);		}		catch(XmlException xe)		{			int line = xe.getLine();			String message = xe.getMessage();			Log.log(Log.ERROR,Registers.class,registerFile + ":"				+ line + ": " + message);		}		catch(FileNotFoundException fnf)		{			//Log.log(Log.DEBUG,Registers.class,fnf);		}		catch(Exception e)		{			Log.log(Log.ERROR,Registers.class,e);		}		finally		{			loading = false;			try			{				if(in != null)					in.close();			}			catch(IOException io)			{				Log.log(Log.ERROR,Registers.class,io);			}		}	} //}}}	//}}}	//{{{ Inner classes	//{{{ Register interface	/**	 * A register.	 */	public interface Register	{		/**		 * Converts to a string.		 */		String toString();		/**		 * Sets the register contents.		 */		void setValue(String value);	} //}}}	//{{{ ClipboardRegister class	/**	 * A clipboard register. Register "$" should always be an	 * instance of this.	 */	public static class ClipboardRegister implements Register	{		Clipboard clipboard;		public ClipboardRegister(Clipboard clipboard)		{			this.clipboard = clipboard;		}		/**		 * Sets the clipboard contents.		 */		public void setValue(String value)		{			StringSelection selection = new StringSelection(value);			clipboard.setContents(selection,null);		}		/**		 * Returns the clipboard contents.		 */		public String toString()		{			try			{				String selection = (String)(clipboard					.getContents(this).getTransferData(					DataFlavor.stringFlavor));				boolean trailingEOL = (selection.endsWith("\n")					|| selection.endsWith(System.getProperty(					"line.separator")));				// Some Java versions return the clipboard				// contents using the native line separator,				// so have to convert it here				BufferedReader in = new BufferedReader(					new StringReader(selection));				StringBuffer buf = new StringBuffer();				String line;				while((line = in.readLine()) != null)				{					// broken Eclipse workaround!					// 24 Febuary 2004					if(line.endsWith("\0"))					{						line = line.substring(0,							line.length() - 1);					}					buf.append(line);					buf.append('\n');				}				// remove trailing \n				if(!trailingEOL && buf.length() != 0)					buf.setLength(buf.length() - 1);				return buf.toString();			}			catch(Exception e)			{				Log.log(Log.NOTICE,this,e);				return null;			}		}	} //}}}	//{{{ StringRegister class	/**	 * Register that stores a string.	 */	public static class StringRegister implements Register	{		private String value;		/**		 * Creates a new string register.		 * @param value The contents		 */		public StringRegister(String value)		{			this.value = value;		}		/**		 * Sets the register contents.		 */		public void setValue(String value)		{			this.value = value;		}		/**		 * Converts to a string.		 */		public String toString()		{			return value;		}		/**		 * Called when this register is no longer available. This		 * implementation does nothing.		 */		public void dispose() {}	} //}}}	//{{{ RegistersHandler class	static class RegistersHandler extends HandlerBase	{		//{{{ resolveEntity() method		public Object resolveEntity(String publicId, String systemId)		{			if("registers.dtd".equals(systemId))			{				// this will result in a slight speed up, since we				// don't need to read the DTD anyway, as AElfred is				// non-validating				return new StringReader("<!-- -->");				/* try				{					return new BufferedReader(new InputStreamReader(						getClass().getResourceAsStream("registers.dtd")));				}				catch(Exception e)				{					Log.log(Log.ERROR,this,"Error while opening"						+ " recent.dtd:");					Log.log(Log.ERROR,this,e);				} */			}			return null;		} //}}}		//{{{ attribute() method		public void attribute(String aname, String value, boolean isSpecified)		{			if(aname.equals("NAME"))				registerName = value;		} //}}}		//{{{ doctypeDecl() method		public void doctypeDecl(String name, String publicId,			String systemId) throws Exception		{			if("REGISTERS".equals(name))				return;			Log.log(Log.ERROR,this,"registers.xml: DOCTYPE must be REGISTERS");		} //}}}		//{{{ endElement() method		public void endElement(String name)		{			if(name.equals("REGISTER"))			{				if(registerName == null || registerName.length() != 1)					Log.log(Log.ERROR,this,"Malformed NAME: " + registerName);				else					setRegister(registerName.charAt(0),charData);			}		} //}}}		//{{{ charData() method		public void charData(char[] ch, int start, int length)		{			charData = new String(ch,start,length);		} //}}}		//{{{ Private members		private String registerName;		private String charData;		//}}}	} //}}}	//}}}}

⌨️ 快捷键说明

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