From b8390e325fce4ff246a72a878e03524056cca554 Mon Sep 17 00:00:00 2001 From: khartlage Date: Fri, 30 Jul 2004 17:12:07 +0000 Subject: [PATCH] added *.module (Drupal) as a valid extension --- net.sourceforge.phpeclipse/plugin.properties | 1 + net.sourceforge.phpeclipse/plugin.xml | 57 +++- .../phpdt/internal/ui/util/PHPFileUtil.java | 31 ++- .../phpeclipse/phpeditor/PHPParserAction.java | 21 +- .../phpeclipse/wizards/PHPFileWizardPage.java | 401 ++++++++++---------- 5 files changed, 294 insertions(+), 217 deletions(-) diff --git a/net.sourceforge.phpeclipse/plugin.properties b/net.sourceforge.phpeclipse/plugin.properties index 796b959..a826cac 100644 --- a/net.sourceforge.phpeclipse/plugin.properties +++ b/net.sourceforge.phpeclipse/plugin.properties @@ -45,6 +45,7 @@ phpFileExtension=php php3FileExtension=php3 php4FileExtension=php4 php5FileExtension=php5 +moduleFileExtension=module incFileExtension=inc phtmlFileExtension=phtml htmlFileExtension=html diff --git a/net.sourceforge.phpeclipse/plugin.xml b/net.sourceforge.phpeclipse/plugin.xml index e64396c..e4175ac 100644 --- a/net.sourceforge.phpeclipse/plugin.xml +++ b/net.sourceforge.phpeclipse/plugin.xml @@ -155,6 +155,10 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/ui/util/PHPFileUtil.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/ui/util/PHPFileUtil.java index 4b9f279..bd07518 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/ui/util/PHPFileUtil.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/ui/util/PHPFileUtil.java @@ -21,6 +21,8 @@ public class PHPFileUtil { public final static char[] SUFFIX_PHP5 = ".PHP5".toCharArray(); //$NON-NLS-1$ public final static char[] SUFFIX_phtml = ".phtml".toCharArray(); //$NON-NLS-1$ public final static char[] SUFFIX_PHTML = ".PHTML".toCharArray(); //$NON-NLS-1$ + public final static char[] SUFFIX_module = ".module".toCharArray(); //$NON-NLS-1$ + public final static char[] SUFFIX_MODULE = ".MODULE".toCharArray(); //$NON-NLS-1$ public final static char[] SUFFIX_inc = ".inc".toCharArray(); //$NON-NLS-1$ public final static char[] SUFFIX_INC = ".INC".toCharArray(); //$NON-NLS-1$ @@ -41,8 +43,9 @@ public class PHPFileUtil { public final static boolean isPHPFileName(String name) { return isPHP_FileName(name) || isPHP3_FileName(name) || - isPHP4_FileName(name) || - isPHP5_FileName(name) || + isPHP4_FileName(name) || + isPHP5_FileName(name) || + isModule_FileName(name) || isPHTML_FileName(name) || isINC_FileName(name); } @@ -111,7 +114,7 @@ public class PHPFileUtil { } /** - * Returns true iff str.toLowerCase().endsWith(".php4") + * Returns true iff str.toLowerCase().endsWith(".php5") * implementation is not creating extra strings. */ private final static boolean isPHP5_FileName(String name) { @@ -127,14 +130,30 @@ public class PHPFileUtil { } return true; } - + /** + * Returns true iff str.toLowerCase().endsWith(".module") + * implementation is not creating extra strings. + */ + private final static boolean isModule_FileName(String name) { + int nameLength = name == null ? 0 : name.length(); + int suffixLength = SUFFIX_MODULE.length; + if (nameLength < suffixLength) + return false; + + for (int i = 0, offset = nameLength - suffixLength; i < suffixLength; i++) { + char c = name.charAt(offset + i); + if (c != SUFFIX_module[i] && c != SUFFIX_MODULE[i]) + return false; + } + return true; + } /** - * Returns true iff str.toLowerCase().endsWith(".php4") + * Returns true iff str.toLowerCase().endsWith(".phtml") * implementation is not creating extra strings. */ private final static boolean isPHTML_FileName(String name) { int nameLength = name == null ? 0 : name.length(); - int suffixLength = SUFFIX_PHTML.length; + int suffixLength = SUFFIX_PHTML.length; if (nameLength < suffixLength) return false; diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/phpeditor/PHPParserAction.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/phpeditor/PHPParserAction.java index ee74a43..7eef9ca 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/phpeditor/PHPParserAction.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/phpeditor/PHPParserAction.java @@ -19,7 +19,7 @@ import java.util.ArrayList; import java.util.List; import net.sourceforge.phpdt.internal.compiler.util.Util; -import net.sourceforge.phpdt.internal.core.builder.PHPBuilder; +import net.sourceforge.phpdt.internal.ui.util.PHPFileUtil; import net.sourceforge.phpeclipse.PHPeclipsePlugin; import net.sourceforge.phpeclipse.actions.ExternalPHPParser; @@ -39,7 +39,6 @@ import org.eclipse.ui.texteditor.TextEditorAction; public class PHPParserAction extends TextEditorAction { private static PHPParserAction instance = new PHPParserAction(); - private static String[] EXTENSIONS = { ".php", ".php3", ".php4", ".php5", ".inc", ".phtml" }; protected IFile fileToParse; protected List fVariables = new ArrayList(100); @@ -78,14 +77,16 @@ public class PHPParserAction extends TextEditorAction { return; } // TODO use isPHPFile() - String name = fileToParse.getName().toLowerCase(); - for (int i = 0; i < EXTENSIONS.length; i++) { - if (name.endsWith(EXTENSIONS[i])) { - phpFlag = true; // php file extension - break; - } - } - if (phpFlag) { + String name = fileToParse.getName(); //.toLowerCase(); +// for (int i = 0; i < EXTENSIONS.length; i++) { +// if (name.endsWith(EXTENSIONS[i])) { +// if (PHPFileUtil.isPHPFileName(name)) { +// phpFlag = true; // php file extension +// break; +// } +// } +// if (phpFlag) { + if (PHPFileUtil.isPHPFileName(name)) { IPreferenceStore store = PHPeclipsePlugin.getDefault().getPreferenceStore(); // if (store.getString(PHPeclipsePlugin.PHP_PARSER_DEFAULT).equals(PHPeclipsePlugin.PHP_INTERNAL_PARSER)) { // PHPBuilder.removeProblemsAndTasksFor(fileToParse); diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/wizards/PHPFileWizardPage.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/wizards/PHPFileWizardPage.java index c931b92..eb48f26 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/wizards/PHPFileWizardPage.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/wizards/PHPFileWizardPage.java @@ -1,16 +1,18 @@ package net.sourceforge.phpeclipse.wizards; /********************************************************************** -Copyright (c) 2000, 2002 IBM Corp. and others. -All rights reserved. This program and the accompanying materials -are made available under the terms of the Common Public License v1.0 -which accompanies this distribution, and is available at -http://www.eclipse.org/legal/cpl-v10.html + Copyright (c) 2000, 2002 IBM Corp. and others. + All rights reserved. This program and the accompanying materials + are made available under the terms of the Common Public License v1.0 + which accompanies this distribution, and is available at + http://www.eclipse.org/legal/cpl-v10.html -Contributors: - IBM Corporation - Initial implementation - Klaus Hartlage - www.eclipseproject.de -**********************************************************************/ + Contributors: + IBM Corporation - Initial implementation + Klaus Hartlage - www.eclipseproject.de + **********************************************************************/ + +import net.sourceforge.phpdt.internal.ui.util.PHPFileUtil; import org.eclipse.core.resources.IContainer; import org.eclipse.core.resources.IFolder; @@ -19,6 +21,7 @@ import org.eclipse.core.resources.IResource; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.Path; +import org.eclipse.jface.dialogs.IDialogPage; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.wizard.WizardPage; @@ -36,199 +39,197 @@ import org.eclipse.swt.widgets.Text; import org.eclipse.ui.dialogs.ContainerSelectionDialog; /** - * The "New" wizard page allows setting the container for - * the new file as well as the file name. The page - * will only accept file name without the extension OR - * with the extension that matches the expected one (cs). + * The "New" wizard page allows setting the container for the new file as well + * as the file name. The page will only accept file name without the extension + * OR with the extension that matches the expected one (cs). */ public class PHPFileWizardPage extends WizardPage { - private Text containerText; - private Text fileText; - private ISelection selection; - - /** - * Constructor for SampleNewWizardPage. - * @param pageName - */ - public PHPFileWizardPage(ISelection selection) { - super("wizardPage"); - setTitle(PHPWizardMessages.getString("WizardPage.title")); - setDescription(PHPWizardMessages.getString("WizardPage.description")); - this.selection = selection; - } - - /** - * @see IDialogPage#createControl(Composite) - */ - public void createControl(Composite parent) { - Composite container = new Composite(parent, SWT.NULL); - GridLayout layout = new GridLayout(); - container.setLayout(layout); - layout.numColumns = 3; - layout.verticalSpacing = 9; - Label label = new Label(container, SWT.NULL); - label.setText(PHPWizardMessages.getString("WizardPage.containerLabel")); - - containerText = new Text(container, SWT.BORDER | SWT.SINGLE); - GridData gd = new GridData(GridData.FILL_HORIZONTAL); - containerText.setLayoutData(gd); - containerText.addModifyListener(new ModifyListener() { - public void modifyText(ModifyEvent e) { - dialogChanged(); - } - }); - - Button button = new Button(container, SWT.PUSH); - button.setText(PHPWizardMessages.getString("WizardPage.browseButtonText")); - button.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - handleBrowse(); - } - }); - label = new Label(container, SWT.NULL); - label.setText(PHPWizardMessages.getString("WizardPage.fileLabel")); - - fileText = new Text(container, SWT.BORDER | SWT.SINGLE); - gd = new GridData(GridData.FILL_HORIZONTAL); - fileText.setLayoutData(gd); - fileText.addModifyListener(new ModifyListener() { - public void modifyText(ModifyEvent e) { - dialogChanged(); - } - }); - initialize(); - dialogChanged(); - setControl(container); - } - - /** - * Tests if the current workbench selection is a suitable - * container to use. - */ - - private void initialize() { - if (selection!=null && selection.isEmpty()==false && selection instanceof IStructuredSelection) { - IStructuredSelection ssel = (IStructuredSelection)selection; - if (ssel.size()>1) return; - Object obj = ssel.getFirstElement(); - if (obj instanceof IResource) { - IContainer container; - if (obj instanceof IContainer) - container = (IContainer)obj; - else - container = ((IResource)obj).getParent(); - containerText.setText(container.getFullPath().toString()); - } - } - fileText.setText("index.php"); - } - - /** - * Uses the standard container selection dialog to - * choose the new value for the container field. - */ - - private void handleBrowse() { - ContainerSelectionDialog dialog = - new ContainerSelectionDialog( - getShell(), - ResourcesPlugin.getWorkspace().getRoot(), - false, - PHPWizardMessages.getString("WizardPage.selectNewFileContainer")); - if (dialog.open() == ContainerSelectionDialog.OK) { - Object[] result = dialog.getResult(); - if (result.length == 1) { - IContainer container = (IContainer) result[0]; - containerText.setText(container.getFullPath().toString()); - } - } - } - - /** - * Ensures that both text fields are set. - */ - private void dialogChanged() { - String container = getContainerName(); - String fileName = getFileName(); - - if (container.length() == 0) { - updateStatus(PHPWizardMessages.getString("WizardPage.containerMustBeSpecified")); - return; - } - if (fileName.length() == 0) { - updateStatus("WizardPage.nameMustBeSpecified"); - return; - } - int dotLoc = fileName.lastIndexOf('.'); - if (dotLoc != -1) { - String ext = fileName.substring(dotLoc + 1); - if (!ext.equalsIgnoreCase("php") && - !ext.equalsIgnoreCase("php3") && - !ext.equalsIgnoreCase("php4") && - !ext.equalsIgnoreCase("php5") && - !ext.equalsIgnoreCase("phtml") && - !ext.equalsIgnoreCase("inc")) { - updateStatus(PHPWizardMessages.getString("WizardPage.mustBePHP")); - return; - } - } - updateStatus(null); - } - - private void updateStatus(String message) { - setErrorMessage(message); - setPageComplete(message == null); - } - - public String getContainerName() { - return containerText.getText(); - } - public String getFileName() { - return fileText.getText(); - } - - /** - * @see WizardPage#isPageComplete() - */ - public boolean isPageComplete() { - return !checkFolderForExistingFile() && super.isPageComplete(); - } - - /** - * Finds the current directory where the file should be created - */ - protected boolean checkFolderForExistingFile() { - boolean result = false; - - if (containerText.getText() != null) { - IPath containerPath = new Path(containerText.getText().trim()); - if (containerPath.segmentCount() > 1) { - IFolder container = ResourcesPlugin.getWorkspace().getRoot().getFolder(containerPath); - if (container != null && container.exists()) { - IResource file = container.getFile(fileText.getText().trim()); - if (file != null && file.exists()) { - this.setErrorMessage(PHPWizardMessages.getString("WizardPage.fileAlreadyExists")); - result = true; - } - } - } else { - // this is a project - IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(containerText.getText().trim()); - if (project != null && project.exists()) { - IResource file = project.getFile(fileText.getText().trim()); - if (file != null && file.exists()) { - this.setErrorMessage(PHPWizardMessages.getString("WizardPage.fileAlreadyExists")); - result = true; - } - } - } - } - - if (!result) - ((PHPFileWizard) this.getWizard()).setFileName(fileText.getText().trim()); - - return result; - } + private Text containerText; + + private Text fileText; + + private ISelection selection; + + /** + * Constructor for SampleNewWizardPage. + * + * @param pageName + */ + public PHPFileWizardPage(ISelection selection) { + super("wizardPage"); + setTitle(PHPWizardMessages.getString("WizardPage.title")); + setDescription(PHPWizardMessages.getString("WizardPage.description")); + this.selection = selection; + } + + /** + * @see IDialogPage#createControl(Composite) + */ + public void createControl(Composite parent) { + Composite container = new Composite(parent, SWT.NULL); + GridLayout layout = new GridLayout(); + container.setLayout(layout); + layout.numColumns = 3; + layout.verticalSpacing = 9; + Label label = new Label(container, SWT.NULL); + label.setText(PHPWizardMessages.getString("WizardPage.containerLabel")); + + containerText = new Text(container, SWT.BORDER | SWT.SINGLE); + GridData gd = new GridData(GridData.FILL_HORIZONTAL); + containerText.setLayoutData(gd); + containerText.addModifyListener(new ModifyListener() { + public void modifyText(ModifyEvent e) { + dialogChanged(); + } + }); + + Button button = new Button(container, SWT.PUSH); + button.setText(PHPWizardMessages.getString("WizardPage.browseButtonText")); + button.addSelectionListener(new SelectionAdapter() { + public void widgetSelected(SelectionEvent e) { + handleBrowse(); + } + }); + label = new Label(container, SWT.NULL); + label.setText(PHPWizardMessages.getString("WizardPage.fileLabel")); + + fileText = new Text(container, SWT.BORDER | SWT.SINGLE); + gd = new GridData(GridData.FILL_HORIZONTAL); + fileText.setLayoutData(gd); + fileText.addModifyListener(new ModifyListener() { + public void modifyText(ModifyEvent e) { + dialogChanged(); + } + }); + initialize(); + dialogChanged(); + setControl(container); + } + + /** + * Tests if the current workbench selection is a suitable container to use. + */ + + private void initialize() { + if (selection != null && selection.isEmpty() == false + && selection instanceof IStructuredSelection) { + IStructuredSelection ssel = (IStructuredSelection) selection; + if (ssel.size() > 1) + return; + Object obj = ssel.getFirstElement(); + if (obj instanceof IResource) { + IContainer container; + if (obj instanceof IContainer) + container = (IContainer) obj; + else + container = ((IResource) obj).getParent(); + containerText.setText(container.getFullPath().toString()); + } + } + fileText.setText("index.php"); + } + + /** + * Uses the standard container selection dialog to choose the new value for + * the container field. + */ + + private void handleBrowse() { + ContainerSelectionDialog dialog = new ContainerSelectionDialog(getShell(), + ResourcesPlugin.getWorkspace().getRoot(), false, PHPWizardMessages + .getString("WizardPage.selectNewFileContainer")); + if (dialog.open() == ContainerSelectionDialog.OK) { + Object[] result = dialog.getResult(); + if (result.length == 1) { + IContainer container = (IContainer) result[0]; + containerText.setText(container.getFullPath().toString()); + } + } + } + + /** + * Ensures that both text fields are set. + */ + private void dialogChanged() { + String container = getContainerName(); + String fileName = getFileName(); + + if (container.length() == 0) { + updateStatus(PHPWizardMessages + .getString("WizardPage.containerMustBeSpecified")); + return; + } + if (fileName.length() == 0) { + updateStatus("WizardPage.nameMustBeSpecified"); + return; + } + + if (!PHPFileUtil.isPHPFileName(fileName)) { + updateStatus(PHPWizardMessages.getString("WizardPage.mustBePHP")); + return; + } + updateStatus(null); + } + + private void updateStatus(String message) { + setErrorMessage(message); + setPageComplete(message == null); + } + + public String getContainerName() { + return containerText.getText(); + } + + public String getFileName() { + return fileText.getText(); + } + + /** + * @see WizardPage#isPageComplete() + */ + public boolean isPageComplete() { + return !checkFolderForExistingFile() && super.isPageComplete(); + } + + /** + * Finds the current directory where the file should be created + */ + protected boolean checkFolderForExistingFile() { + boolean result = false; + + if (containerText.getText() != null) { + IPath containerPath = new Path(containerText.getText().trim()); + if (containerPath.segmentCount() > 1) { + IFolder container = ResourcesPlugin.getWorkspace().getRoot().getFolder( + containerPath); + if (container != null && container.exists()) { + IResource file = container.getFile(fileText.getText().trim()); + if (file != null && file.exists()) { + this.setErrorMessage(PHPWizardMessages + .getString("WizardPage.fileAlreadyExists")); + result = true; + } + } + } else { + // this is a project + IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject( + containerText.getText().trim()); + if (project != null && project.exists()) { + IResource file = project.getFile(fileText.getText().trim()); + if (file != null && file.exists()) { + this.setErrorMessage(PHPWizardMessages + .getString("WizardPage.fileAlreadyExists")); + result = true; + } + } + } + } + + if (!result) + ((PHPFileWizard) this.getWizard()).setFileName(fileText.getText().trim()); + + return result; + } } \ No newline at end of file -- 1.7.1