📄 xmlcalendaropen.java
字号:
/** * */package net.sourceforge.ganttproject.calendar;import java.io.File;import java.io.FilenameFilter;import java.io.IOException;import java.io.InputStream;import java.net.URL;import java.net.URLDecoder;import java.util.ArrayList;import java.util.Iterator;import java.util.List;import javax.swing.filechooser.FileFilter;import javax.xml.parsers.ParserConfigurationException;import javax.xml.parsers.SAXParser;import javax.xml.parsers.SAXParserFactory;import net.sourceforge.ganttproject.parser.FileFormatException;import net.sourceforge.ganttproject.parser.ParsingListener;import net.sourceforge.ganttproject.parser.TagHandler;import org.eclipse.core.runtime.IConfigurationElement;import org.eclipse.core.runtime.Platform;import org.osgi.framework.Bundle;import org.xml.sax.Attributes;import org.xml.sax.SAXException;import org.xml.sax.helpers.DefaultHandler;/** * @author nbohn */public class XMLCalendarOpen { //private File myCalendarFiles[]; private List myCalendarResources = new ArrayList(); private String myCalendarLabels[]; /** The main frame */ private ArrayList myTagHandlers = new ArrayList(); private ArrayList myListeners = new ArrayList(); boolean load(InputStream inputStream) throws ParserConfigurationException, SAXException, IOException { // Use an instance of ourselves as the SAX event handler DefaultHandler handler = new GanttXMLParser(); // Use the default (non-validating) parser SAXParserFactory factory = SAXParserFactory.newInstance(); SAXParser saxParser = factory.newSAXParser(); saxParser.parse(inputStream, handler); return true; } void addTagHandler(TagHandler handler) { myTagHandlers.add(handler); } void addParsingListener(ParsingListener listener) { myListeners.add(listener); } private TagHandler getDefaultTagHandler() { return new DefaultTagHandler(); } private class DefaultTagHandler implements TagHandler { private String name; public void startElement(String namespaceURI, String sName, String qName, Attributes attrs) { String eName = qName; // element name if (attrs != null) { for (int i = 0; i < attrs.getLength(); i++) { String aName = attrs.getLocalName(i); // Attr name if ("".equals(aName)) { aName = attrs.getQName(i); // The project part } if (eName.equals("calendar")) { if (aName.equals("name")) { name = attrs.getValue(i); } else if (aName.equals("type")) { } } } } } public void endElement(String namespaceURI, String sName, String qName) { } public String getName() { return name; } } private class GanttXMLParser extends DefaultHandler { // =========================================================== // SAX DocumentHandler methods // =========================================================== public void endDocument() throws SAXException { for (int i = 0; i < myListeners.size(); i++) { ParsingListener l = (ParsingListener) myListeners.get(i); l.parsingFinished(); } } public void startElement(String namespaceURI, String sName, // simple // name String qName, // qualified name Attributes attrs) throws SAXException { for (Iterator handlers = myTagHandlers.iterator(); handlers .hasNext();) { TagHandler next = (TagHandler) handlers.next(); try { next.startElement(namespaceURI, sName, qName, attrs); } catch (FileFormatException e) { throw new RuntimeException(e); } } } public void endElement(String namespaceURI, String sName, String qName) throws SAXException { for (Iterator handlers = myTagHandlers.iterator(); handlers .hasNext();) { TagHandler next = (TagHandler) handlers.next(); next.endElement(namespaceURI, sName, qName); } } } public void setCalendars() throws Exception { // TODO The loading of the calendar is not clear. There are 2 cases here // : // - using eclipse where test is a directory // - using the built jar archive where test is not a directory// // URL url = getClass().getResource("/calendar");// URL resolvedUrl = Platform.resolve(url);// File test = new File(resolvedUrl.getPath());// File path = new File(URLDecoder.decode(test.getAbsolutePath())); // if(test.isDirectory()) // path = test; // else // path = new File("calendar"); myCalendarResources.clear(); DefaultTagHandler th = (DefaultTagHandler) getDefaultTagHandler(); addTagHandler(th); IConfigurationElement[] calendarExtensions = Platform.getExtensionRegistry().getConfigurationElementsFor(GPCalendar.EXTENSION_POINT_ID);// myCalendarFiles = path.listFiles(new Filter(".calendar")); myCalendarLabels = new String[calendarExtensions.length]; for (int i = 0; i < calendarExtensions.length; i++) { Bundle nextBundle = Platform.getBundle(calendarExtensions[i].getDeclaringExtension().getNamespace()); URL calendarUrl = nextBundle.getResource(calendarExtensions[i].getAttribute("resource-url")); if (calendarUrl!=null) { load(calendarUrl.openStream()); myCalendarLabels[i] = th.getName(); myCalendarResources.add(calendarUrl); } } } public URL[] getCalendarResources() { return (URL[]) myCalendarResources.toArray(new URL[0]); } public String[] getLabels() { return myCalendarLabels; } private static class Filter extends FileFilter implements FilenameFilter { private String extension; public Filter(String extension) { if (extension == null) { throw new NullPointerException( "La description (ou extension) ne peut 阾re null."); } this.extension = extension; } public String getDescription() { // TODO Auto-generated method stub return null; } public boolean accept(File file, String arg1) { return arg1.endsWith(extension); } public boolean accept(File arg0) { // TODO Auto-generated method stub return false; } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -