associationservice.java

来自「jdic,显著提高swing性能的插件」· Java 代码 · 共 418 行 · 第 1/2 页

JAVA
418
字号
/* * Copyright (C) 2004 Sun Microsystems, Inc. All rights reserved. Use is * subject to license terms. *  * This program is free software; you can redistribute it and/or modify * it under the terms of the Lesser GNU General Public License as * published by the Free Software Foundation; either version 2 of the * License, or (at your option) 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.jdesktop.jdic.filetypes;import java.net.URL;import java.util.Iterator;import java.util.List;import org.jdesktop.jdic.filetypes.internal.AppAssociationWriter;import org.jdesktop.jdic.filetypes.internal.AppAssociationWriterFactory;import org.jdesktop.jdic.filetypes.internal.AppAssociationReader;import org.jdesktop.jdic.filetypes.internal.AppAssociationReaderFactory;import org.jdesktop.jdic.filetypes.internal.AppUtility;import org.jdesktop.jdic.init.JdicInitException;import org.jdesktop.jdic.init.JdicManager;/** * The <code>AssociationService</code> class provides several methods to access * the file type associations. It includes methods to retrieve a particular * file type association, to register a new file type association into the system,  * and to unregister a registered file type association from the system.  * Each file type association is represented by an <code>Association</code> object. * <p>   * The file type information storage and access mechanism is platform-dependent:  * <ul> *   <li> For Microsoft Windows platforms, the file type information is stored  *        in the registry, which is a tree structure.  *   <li> For Gnome/UNIX platforms, the file type information is stored in the *        MIME type database, which consists of some plain text files  *        (.keys, .mime, .applications). Each MIME text file could contain one  *        or multiple file types. A file type could be registered in the system  *        by providing new MIME files, or being added to existing MIME files. * </ul> *  * @see Association * @see Action */public class AssociationService {    // A platform-dependent instance of AppAssociationReader.    private AppAssociationReader appAssocReader;    // A platform-dependent instance of AppAssociationWriter.    private AppAssociationWriter appAssocWriter;      // Add the initialization code from package org.jdesktop.jdic.init.    // To set the environment variables or initialize the set up for     // native libraries and executable files.    static {        try {            JdicManager jm = JdicManager.getManager();            jm.initShareNative();        } catch (JdicInitException e){            e.printStackTrace();        }    }    /**     * Constructor of an <code>AssociationService</code> object.     */    public AssociationService() {        appAssocReader = AppAssociationReaderFactory.newInstance();        appAssocWriter = AppAssociationWriterFactory.newInstance();    }      /**     * Returns the association representing the file type of the      * given MIME type.     *     * @param mimeType a given MIME type name.     * @return the appropriate <code>Association</code> object; <code>null</code>      *         if the given MIME type is not found in the system.     */    public Association getMimeTypeAssociation(String mimeType) {        if (mimeType == null) {            throw new IllegalArgumentException("The specified mime type is null");        }        // Check whether the given mime type exists/is registered in the system.        if (!appAssocReader.isMimeTypeExist(mimeType)) {            return null;		        }                // Get the association associated with the mime type.        Association assoc = new Association();        List fileExtList = appAssocReader.getFileExtListByMimeType(mimeType);        String iconFileName = appAssocReader.getIconFileNameByMimeType(mimeType);        String description = appAssocReader.getDescriptionByMimeType(mimeType);        List actionList = appAssocReader.getActionListByMimeType(mimeType);              assoc.setMimeType(mimeType);        if (fileExtList != null) {            Iterator iter = fileExtList.iterator();            if (iter != null) {                while (iter.hasNext()) {                    assoc.addFileExtension((String) iter.next());                }            }        }                if (iconFileName != null) {            assoc.setIconFileName(iconFileName);        }                if (description != null) {            assoc.setDescription(description);        }              if (actionList != null) {            Iterator iter = actionList.iterator();            if (iter != null) {                while (iter.hasNext()) {                    assoc.addAction((Action) iter.next());                }            }        }                return assoc;    }              /**     * Returns the association representing the file type of the given      * file extension.     * <p>     * The file extension list in the returned <code>Association</code> object      * contains only this given file extension.       *     * @param fileExt a given file extension name.     * @return the appropriate <code>Association</code> object; <code>null</code>      *         if the given file extension is not found in the system.      */    public Association getFileExtensionAssociation(String fileExt) {        if (fileExt == null) {            throw new IllegalArgumentException("The specified file extension is null");        }        // Add the leading '.' character to the given file extension if not exists.            fileExt = AppUtility.addDotToFileExtension(fileExt);        // Check whether the given file extension exists/is registered in the system.        if (!appAssocReader.isFileExtExist(fileExt)) {            return null;        }                // Get the association associated with the file extension.        Association assoc = new Association();        String mimeType = appAssocReader.getMimeTypeByFileExt(fileExt);                String iconFileName = appAssocReader.getIconFileNameByFileExt(fileExt);        String description = appAssocReader.getDescriptionByFileExt(fileExt);        List actionList = appAssocReader.getActionListByFileExt(fileExt);              // Do not retrieve other file extensions.        assoc.addFileExtension(fileExt);                if (iconFileName != null) {            assoc.setIconFileName(iconFileName);        }                if (mimeType != null) {            assoc.setMimeType(mimeType);        }                if (description != null) {            assoc.setDescription(description);        }              if (actionList != null) {            Iterator iter = actionList.iterator();            if (iter != null) {                while (iter.hasNext()) {                    assoc.addAction((Action) iter.next());                }            }        }                return assoc;    }              /**     * Returns the association representing the file type of the file the given      * URL points to.     *          * @param url a given URL.     * @return the appropriate <code>Association</code> object; <code>null</code>      *         if the file type of the file the given URL points to is not      *         found in the system.      */    public Association getAssociationByContent(URL url) {        if (url == null) {

⌨️ 快捷键说明

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