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

📄 servicelisthandler.java

📁 开源的java 编辑器源代码
💻 JAVA
字号:
/* * ServiceManager.java - Handles services.xml files in plugins * :tabSize=8:indentSize=8:noTabs=false: * :folding=explicit:collapseFolds=1: * * Copyright (C) 2003 Slava Pestov * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA. */package org.gjt.sp.jedit;//{{{ Importsimport com.microstar.xml.*;import java.io.*;import java.net.URL;import java.util.*;import org.gjt.sp.util.Log;//}}}/** * @since jEdit 4.2pre1 * @author Slava Pestov * @version $Id: ServiceListHandler.java,v 1.3 2003/04/30 21:22:37 spestov Exp $ */class ServiceListHandler extends HandlerBase{	//{{{ ServiceListHandler constructor	ServiceListHandler(PluginJAR plugin, URL uri)	{		this.plugin = plugin;		this.uri = uri;		stateStack = new Stack();		cachedServices = new LinkedList();	} //}}}	//{{{ resolveEntity() method	public Object resolveEntity(String publicId, String systemId)	{		if("services.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					("/org/gjt/sp/jedit/services.dtd")));			}			catch(Exception e)			{				Log.log(Log.ERROR,this,"Error while opening"					+ " dockables.dtd:");				Log.log(Log.ERROR,this,e);			} */		}		return null;	} //}}}	//{{{ attribute() method	public void attribute(String aname, String value, boolean isSpecified)	{		if(aname.equals("NAME"))			serviceName = value;		else if(aname.equals("CLASS"))			serviceClass = value;	} //}}}	//{{{ doctypeDecl() method	public void doctypeDecl(String name, String publicId,		String systemId) throws Exception	{		if("SERVICES".equals(name))			return;		Log.log(Log.ERROR,this,uri + ": DOCTYPE must be SERVICES");	} //}}}	//{{{ charData() method	public void charData(char[] c, int off, int len)	{		String tag = peekElement();		String text = new String(c, off, len);		if (tag == "SERVICE")		{			code = text;		}	} //}}}	//{{{ startElement() method	public void startElement(String tag)	{		tag = pushElement(tag);	} //}}}	//{{{ endElement() method	public void endElement(String name)	{		if(name == null)			return;		String tag = peekElement();		if(name.equals(tag))		{			if(tag == "SERVICE")			{				ServiceManager.Descriptor d =					new ServiceManager.Descriptor(					serviceClass,serviceName,code,plugin);				ServiceManager.registerService(d);				cachedServices.add(d);			}			popElement();		}		else		{			// can't happen			throw new InternalError();		}	} //}}}	//{{{ startDocument() method	public void startDocument()	{		try		{			pushElement(null);		}		catch (Exception e)		{			e.printStackTrace();		}	} //}}}	//{{{ getCachedServices() method	public ServiceManager.Descriptor[] getCachedServices()	{		return (ServiceManager.Descriptor[])cachedServices.toArray(			new ServiceManager.Descriptor[cachedServices.size()]);	} //}}}	//{{{ Private members	//{{{ Instance variables	private PluginJAR plugin;	private URL uri;	private String serviceName;	private String serviceClass;	private String code;	private Stack stateStack;	private List cachedServices;	//}}}	//{{{ pushElement() method	private String pushElement(String name)	{		name = (name == null) ? null : name.intern();		stateStack.push(name);		return name;	} //}}}	//{{{ peekElement() method	private String peekElement()	{		return (String) stateStack.peek();	} //}}}	//{{{ popElement() method	private String popElement()	{		return (String) stateStack.pop();	} //}}}	//}}}}

⌨️ 快捷键说明

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