/* ******************************************************************************
* Copyright (c) 2006-2010 XMind Ltd. and others.
*
* This file is a part of XMind 3. XMind releases 3 and
* above are dual-licensed under the Eclipse Public License (EPL),
* which is available at http://www.eclipse.org/legal/epl-v10.html
* and the GNU Lesser General Public License (LGPL),
* which is available at http://www.gnu.org/licenses/lgpl.html
* See http://www.xmind.net/license.html for details.
*
* Contributors:
* XMind Ltd. - initial API and implementation
*******************************************************************************/
package org.xmind.ui.internal;
/**
* @author Frank Shaka
* @deprecated Use MindMapUI.getResourceManager()
*/
@Deprecated
public class MindMapTemplateManager {
// private static final MindMapTemplateManager instance = new MindMapTemplateManager();
//
// private static final String DEFAULT_TEMPLATE_ID = "org.xmind.ui.template.default"; //$NON-NLS-1$
//
// private static final String TEMPLATES_PATH = "templates"; //$NON-NLS-1$
// private static final String TEMPLATES_DIR = TEMPLATES_PATH + "/"; //$NON-NLS-1$
//
// private List<ITemplateManagerListener> listeners = new ArrayList<ITemplateManagerListener>();
//
// private MindMapTemplateManager() {
// }
//
// public void addTemplateManagerListener(ITemplateManagerListener listener) {
// listeners.add(listener);
// }
//
// public void removeTemplateManagerListener(
// ITemplateManagerListener listener) {
// listeners.remove(listener);
// }
//
// private void fireTemplateAdded(ITemplateDescriptor template) {
// for (Object listener : listeners.toArray()) {
// try {
// ((ITemplateManagerListener) listener).templateAdded(template);
// } catch (Throwable e) {
// Logger.log(e);
// }
// }
// }
//
// private void fireTemplateRemoved(ITemplateDescriptor template) {
// for (Object listener : listeners.toArray()) {
// try {
// ((ITemplateManagerListener) listener).templateRemoved(template);
// } catch (Throwable e) {
// Logger.log(e);
// }
// }
// }
//
// public List<ITemplateDescriptor> importTemplates(String... fileNames) {
// List<ITemplateDescriptor> importedTemplates = new ArrayList<ITemplateDescriptor>(
// fileNames.length);
// for (String fileName : fileNames) {
// ITemplateDescriptor template = importCustomTemplate(fileName);
// if (template != null) {
// importedTemplates.add(template);
// }
// }
// return importedTemplates;
// }
//
// public ITemplateDescriptor importCustomTemplate(IWorkbook workbook,
// String name) {
// if (!name.endsWith(MindMapUI.FILE_EXT_TEMPLATE)
// && !name.endsWith(MindMapUI.FILE_EXT_XMIND)) {
// name = name + MindMapUI.FILE_EXT_TEMPLATE;
// }
// File targetFile = createCustomTemplateOutputFile(name);
// IWorkbookRef wr = MindMapUIPlugin.getDefault().getWorkbookRefFactory()
// .createWorkbookRef(targetFile.toURI(), null);
// if (wr == null)
// return null;
//
// final boolean[] finished = new boolean[1];
// finished[0] = false;
// wr.importFrom(new PreLoadedWorkbookRef(workbook, null),
// new IEditableOperationCallback() {
// public void handleCompletion(boolean successful,
// IEditableStatus status) {
// finished[0] = true;
// }
// });
//
// try {
// while (!finished[0]) {
// Thread.sleep(0);
// }
// } catch (InterruptedException e) {
// return null;
// }
// if (!wr.exists())
// return null;
//
// FileTemplateDescriptor template = new FileTemplateDescriptor(
// targetFile);
// fireTemplateAdded(template);
// return template;
// }
//
// public ITemplateDescriptor importCustomTemplate(String path) {
// File sourceFile = new File(path);
// String fileName = sourceFile.getName();
// File targetFile = createCustomTemplateOutputFile(fileName);
// try {
// FileUtils.copy(sourceFile, targetFile);
// FileTemplateDescriptor template = new FileTemplateDescriptor(
// targetFile);
// fireTemplateAdded(template);
// return template;
// } catch (IOException e) {
// }
// return null;
// }
//
// private File createCustomTemplateOutputFile(String fileName) {
// String dirPath = getCustomTemplatesLocation();
// File dir = new File(dirPath);
// FileUtils.ensureDirectory(dir);
// return createNonConflictingFile(dir, fileName);
// }
//
// public boolean removeTemplate(ITemplateDescriptor template) {
// if (template instanceof FileTemplateDescriptor) {
// File file = ((FileTemplateDescriptor) template).getFile();
// if (file.delete()) {
// fireTemplateRemoved(template);
// return true;
// }
// }
// return false;
// }
//
// public List<ITemplateDescriptor> loadAllTemplates() {
// List<ITemplateDescriptor> templates = new ArrayList<ITemplateDescriptor>();
// loadDefaultTemplates(templates);
// loadSystemTemplates(templates);
// loadCustomTemplates(templates);
// return templates;
// }
//
// public List<ITemplateDescriptor> loadDefaultTemplates() {
// List<ITemplateDescriptor> templates = new ArrayList<ITemplateDescriptor>();
// loadDefaultTemplates(templates);
// return templates;
// }
//
// public List<ITemplateDescriptor> loadSystemTemplates() {
// List<ITemplateDescriptor> templates = new ArrayList<ITemplateDescriptor>();
// loadSystemTemplates(templates);
// return templates;
// }
//
// public List<ITemplateDescriptor> loadCustomTemplates() {
// List<ITemplateDescriptor> templates = new ArrayList<ITemplateDescriptor>();
// loadCustomTemplates(templates);
// return templates;
// }
//
// private void loadDefaultTemplates(List<ITemplateDescriptor> templates) {
// templates.add(new DefaultTemplateDescriptor(DEFAULT_TEMPLATE_ID,
// WizardMessages.ChooseTemplateWizardPage_BlankMap_title));
// }
//
// private void loadCustomTemplates(List<ITemplateDescriptor> templates) {
// String templatesDir = getCustomTemplatesLocation();
// loadTemplatesFromDir(templates, new File(templatesDir));
// }
//
// private String getCustomTemplatesLocation() {
// return Core.getWorkspace().getAbsolutePath(TEMPLATES_PATH);
// }
//
// private void loadTemplatesFromDir(List<ITemplateDescriptor> templates,
// File templatesDir) {
// List<ITemplateDescriptor> list = new ArrayList<ITemplateDescriptor>();
// if (templatesDir != null && templatesDir.isDirectory()) {
// for (String fileName : templatesDir.list()) {
// if (fileName.endsWith(MindMapUI.FILE_EXT_TEMPLATE)
// || fileName.endsWith(MindMapUI.FILE_EXT_XMIND)) {
// File file = new File(templatesDir, fileName);
// if (file.isFile() && file.canRead()) {
// list.add(new FileTemplateDescriptor(file));
// }
// }
// }
// }
// Collections.sort(list, new Comparator<ITemplateDescriptor>() {
// public int compare(ITemplateDescriptor t1, ITemplateDescriptor t2) {
// File f1 = ((FileTemplateDescriptor) t1).getFile();
// File f2 = ((FileTemplateDescriptor) t2).getFile();
// return (int) (f1.lastModified() - f2.lastModified());
// }
// });
// templates.addAll(list);
// }
//
// private void loadSystemTemplates(List<ITemplateDescriptor> templates) {
// Bundle bundle = Platform.getBundle(MindMapUI.PLUGIN_ID);
// if (bundle != null) {
// Element element = getTemplateListElement(bundle);
// if (element != null) {
// java.util.Properties properties = getTemplateListProperties(
// bundle);
// Iterator<Element> it = DOMUtils.childElementIterByTag(element,
// "template"); //$NON-NLS-1$
// while (it.hasNext()) {
// Element templateEle = it.next();
// String resourcePath = templateEle.getAttribute("resource"); //$NON-NLS-1$
// if (!"".equals(resourcePath)) { //$NON-NLS-1$
// if (!resourcePath.startsWith("/")) { //$NON-NLS-1$
// resourcePath = TEMPLATES_DIR + resourcePath;
// }
// URL url = findTemplateResource(bundle, resourcePath);
// if (url != null) {
// String name = templateEle.getAttribute("name"); //$NON-NLS-1$
// if (name.startsWith("%")) { //$NON-NLS-1$
// if (properties != null) {
// name = properties
// .getProperty(name.substring(1));
// } else {
// name = null;
// }
// }
// if (name == null || "".equals(name)) { //$NON-NLS-1$
// name = FileUtils
// .getNoExtensionFileName(resourcePath);
// }
// templates.add(new URLTemplateDescriptor(url, name));
// }
// }
// }
// }
// }
// }
//
// private URL findTemplateResource(Bundle bundle, String resourcePath) {
// return FileLocator.find(bundle, new Path("$nl$/" + resourcePath), null); //$NON-NLS-1$
// }
//
// private java.util.Properties getTemplateListProperties(Bundle bundle) {
// URL propURL = ResourceFinder.findResource(bundle, TEMPLATES_DIR,
// "templates", ".properties"); //$NON-NLS-1$ //$NON-NLS-2$
// if (propURL != null) {
// try {
// InputStream is = propURL.openStream();
// try {
// java.util.Properties properties = new java.util.Properties();
// properties.load(is);
// return properties;
// } finally {
// is.close();
// }
// } catch (IOException e) {
// }
// }
// return null;
// }
//
// private Element getTemplateListElement(Bundle bundle) {
// URL xmlURL = FileLocator.find(bundle,
// new Path(TEMPLATES_DIR + "templates.xml"), null); //$NON-NLS-1$
// if (xmlURL == null)
// return null;
// try {
// InputStream is = xmlURL.openStream();
// if (is != null) {
// try {
// Document doc = DOMUtils.loadDocument(is);
// if (doc != null)
// return doc.getDocumentElement();
// } finally {
// is.close();
// }
// }
// } catch (Throwable e) {
// }
// return null;
// }
//
// protected File createNonConflictingFile(File rootDir, String fileName) {
// int dotIndex = fileName.lastIndexOf('.');
// String name = dotIndex < 0 ? fileName : fileName.substring(0, dotIndex);
// String ext = dotIndex < 0 ? "" : fileName.substring(dotIndex); //$NON-NLS-1$
// File targetFile = new File(rootDir, fileName);
// int i = 1;
// while (targetFile.exists()) {
// i++;
// targetFile = new File(rootDir,
// String.format("%s %s%s", name, i, ext)); //$NON-NLS-1$
// }
// return targetFile;
// }
//
// public ITemplateDescriptor loadTemplate(String symbolicName) {
// if (symbolicName == null || "".equals(symbolicName)) //$NON-NLS-1$
// return null;
// if (symbolicName.startsWith("theme:")) { //$NON-NLS-1$
// IStyle theme = findTheme(symbolicName.substring(6));
// if (theme != null) {
// return new ThemeTemplateDescriptor(theme);
// }
// return null;
// } else if (symbolicName.startsWith("file:")) { //$NON-NLS-1$
// String path = symbolicName.substring(5);
// File file = new File(path);
// if (file.isFile() && file.canRead()) {
// return new FileTemplateDescriptor(file);
// }
// return null;
// } else if (symbolicName.startsWith("default:")) { //$NON-NLS-1$
// String id = symbolicName.substring(8);
// return new DefaultTemplateDescriptor(id, ""); //$NON-NLS-1$
// } else {
// return loadTemplateFromURL(symbolicName);
// }
// }
//
// private ITemplateDescriptor loadTemplateFromURL(String uri) {
// try {
// URL url = new URL(uri);
// return new URLTemplateDescriptor(url, ""); //$NON-NLS-1$
// } catch (MalformedURLException e) {
// }
// return null;
// }
//
// private IStyle findTheme(String themeId) {
// IResourceManager resourceManager = MindMapUI.getResourceManager();
// if ("blank".equals(themeId)) { //$NON-NLS-1$
// return resourceManager.getBlankTheme();
// }
// IStyleSheet systemThemeSheet = resourceManager.getSystemThemeSheet();
// IStyle style = systemThemeSheet.findStyle(themeId);
// if (style != null)
// return style;
// IStyleSheet userThemeSheet = resourceManager.getUserThemeSheet();
// return userThemeSheet.findStyle(themeId);
// }
//
// public static MindMapTemplateManager getInstance() {
// return instance;
// }
//
}