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

📄 xmlcalendaropen.java

📁 It is all about project scheduling. GanttProject is a tool for creating a project schedule by means
💻 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 + -