package tk.eclipse.plugin.htmleditor; import java.io.File; import java.util.List; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IResource; import org.eclipse.core.resources.IWorkspaceRoot; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.ui.dialogs.PropertyPage; import tk.eclipse.plugin.jseditor.launch.JavaScriptLibraryTable; /** * * @author Naoki Takezoe */ public class JavaScriptPropertyPage extends PropertyPage { private HTMLProjectParams params; private JavaScriptLibraryTable tableViewer; public JavaScriptPropertyPage(){ super(); setDescription(HTMLPlugin.getResourceString("JavaScriptPropertyPage.Description")); } @Override protected Control createContents(Composite parent) { tableViewer = new JavaScriptLibraryTable(parent); try { params = new HTMLProjectParams(getProject()); } catch (Exception ex) { HTMLPlugin.logException(ex); } fillControls(); return tableViewer.getControl(); } @SuppressWarnings("unchecked") private void fillControls(){ List tableModel = tableViewer.getModel(); tableModel.clear(); String[] javaScripts = params.getJavaScripts(); IWorkspaceRoot wsroot = ResourcesPlugin.getWorkspace().getRoot(); for(int i=0;i<javaScripts.length;i++){ if(javaScripts[i].startsWith(JavaScriptLibraryTable.PREFIX)){ IResource resource = wsroot.findMember(javaScripts[i].substring(JavaScriptLibraryTable.PREFIX.length())); if(resource!=null && resource instanceof IFile && resource.exists()){ tableModel.add(resource); } } else { tableModel.add(new File(javaScripts[i])); } } tableViewer.refresh(); } @Override protected void performDefaults() { params = new HTMLProjectParams(); fillControls(); } @Override public boolean performOk() { // save configuration try { params = new HTMLProjectParams(getProject()); List tableModel = tableViewer.getModel(); String[] javaScripts = new String[tableModel.size()]; for(int i=0;i<tableModel.size();i++){ Object obj = tableModel.get(i); if(obj instanceof File){ javaScripts[i] = ((File)obj).getAbsolutePath(); } else if(obj instanceof IFile){ javaScripts[i] = JavaScriptLibraryTable.PREFIX + ((IFile)obj).getFullPath().toString(); } } params.setJavaScripts(javaScripts); params.save(getProject()); } catch (Exception ex) { HTMLPlugin.logException(ex); return false; } return true; } private IProject getProject(){ return (IProject)getElement(); } }