/******************************************************************************* * Copyright (c) 2007 Exadel, Inc. and Red Hat, Inc. * Distributed under license by Red Hat, Inc. All rights reserved. * This program is made available under the terms of the * Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Exadel, Inc. and Red Hat, Inc. - initial API and implementation ******************************************************************************/ package org.jboss.tools.common.model.ui.views.palette; import org.eclipse.core.resources.IFile; import org.eclipse.ui.IEditorInput; import org.eclipse.ui.IEditorPart; import org.eclipse.ui.IFileEditorInput; import org.jboss.tools.common.model.ui.editor.EditorDescriptor; import org.jboss.tools.common.util.FileUtil; public class PaletteContents { private IEditorPart editorPart; private String[] natureTypes; private String[] editorTypes; public static String TYPE_MOBILE = "mobile"; //$NON-NLS-1$ public static String TYPE_JSF = "jsf"; //$NON-NLS-1$ public PaletteContents(IEditorPart editorPart) { this.editorPart = editorPart; if (editorPart == null) { emptyInit(); return; } EditorDescriptor editorDescriptor = (EditorDescriptor)editorPart.getAdapter(EditorDescriptor.class); if (editorDescriptor != null) editorTypes = editorDescriptor.getEditorTypes(); else editorTypes = new String[0]; natureTypes = computeNatureTypes(); } public boolean update() { if(editorPart == null) return false; String[] ns = computeNatureTypes(); if(changed(ns)) { natureTypes = ns; return true; } return false; } boolean changed(String[] ns) { return (natureTypes.length != ns.length || (natureTypes.length > 0 && !natureTypes[0].equals(ns[0]))); } private String[] computeNatureTypes() { String[] result = new String[0]; if(editorPart != null) { IEditorInput input = editorPart.getEditorInput(); if (input instanceof IFileEditorInput) { IFile file = ((IFileEditorInput)input).getFile(); if(file != null) { String doctype = FileUtil.getDoctype(FileUtil.getContentFromEditorOrFile(file)); if("html".equalsIgnoreCase(doctype) //$NON-NLS-1$ || (doctype == null && FileUtil.isHTMLFile(file)) ) { result = new String[]{TYPE_MOBILE}; } else { result = new String[]{TYPE_JSF}; } } } } return result; } private void emptyInit() { natureTypes = new String[0]; editorTypes = new String[0]; } public boolean empty() { return natureTypes.length <= 0 && editorTypes.length <= 0; } public String[] getNatureTypes() { return natureTypes; } public String[] getEditorTypes() { return editorTypes; } }