PHPOpenAllIncludesEditorAction.java
| Index Score | ||
|---|---|---|
![]() |
![]() |
net.sourceforge.phpeclipse.actions |
![]() |
![]() |
PHPeclipse |
View: Reasons, Metrics, Source Code
These are the metrics that contribute to the Enerjy Score for this file, ranked by impact. So the metrics listed at the top influence the score to a greater extent that the metrics listed at the bottom.
/*******************************************************************************
* 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: www.phpeclipse.de
******************************************************************************/
package net.sourceforge.phpeclipse.actions;
import java.io.File;
import java.util.List;
import net.sourceforge.phpdt.internal.ui.viewsupport.ListContentProvider;
import net.sourceforge.phpeclipse.PHPeclipsePlugin;
import net.sourceforge.phpeclipse.phpeditor.PHPEditor;
import org.eclipse.core.resources.IContainer;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.Path;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.text.BadLocationException;
import org.eclipse.jface.text.IDocument;
import org.eclipse.jface.text.ITextSelection;
import org.eclipse.jface.text.TextSelection;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.jface.window.Window;
import org.eclipse.swt.graphics.Point;
import org.eclipse.ui.IEditorActionDelegate;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.IFileEditorInput;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.actions.ActionDelegate;
import org.eclipse.ui.dialogs.ListSelectionDialog;
public class PHPOpenAllIncludesEditorAction extends ActionDelegate implements
IEditorActionDelegate {
private IWorkbenchWindow fWindow;
private PHPEditor fEditor;
private IProject fProject;
private IncludesScanner fIncludesScanner;
public void dispose() {
}
public void init(IWorkbenchWindow window) {
this.fWindow = window;
}
public void selectionChanged(IAction action, ISelection selection) {
if (!selection.isEmpty()) {
if (selection instanceof TextSelection) {
action.setEnabled(true);
} else if (fWindow.getActivePage() != null
&& fWindow.getActivePage().getActivePart() != null) {
//
}
}
}
private IWorkbenchPage getActivePage() {
IWorkbenchWindow workbenchWindow = fEditor.getEditorSite()
.getWorkbenchWindow();
IWorkbenchPage page = workbenchWindow.getActivePage();
return page;
}
public IContainer getWorkingLocation(IFileEditorInput editorInput) {
if (editorInput == null || editorInput.getFile() == null) {
return null;
}
return editorInput.getFile().getParent();
}
private IFile getIncludeFile(IProject project,
IFileEditorInput editorInput, String relativeFilename) {
IContainer container = getWorkingLocation(editorInput);
String fullPath = project.getFullPath().toString();
IFile file = null;
if (relativeFilename.startsWith("../")) {
Path path = new Path(relativeFilename);
file = container.getFile(path);
return file;
}
int index = relativeFilename.lastIndexOf('/');
if (index >= 0) {
Path path = new Path(relativeFilename);
file = project.getFile(path);
if (file.exists()) {
return file;
}
}
Path path = new Path(relativeFilename);
file = container.getFile(path);
return file;
}
public void run(IAction action) {
if (fEditor == null) {
IEditorPart targetEditor = fWindow.getActivePage()
.getActiveEditor();
if (targetEditor != null && (targetEditor instanceof PHPEditor)) {
fEditor = (PHPEditor) targetEditor;
}
}
if (fEditor != null) {
// determine the current Project from a (file-based) Editor
IFile f = ((IFileEditorInput) fEditor.getEditorInput()).getFile();
fProject = f.getProject();
// System.out.println(fProject.toString());
ITextSelection selection = (ITextSelection) fEditor
.getSelectionProvider().getSelection();
IDocument doc = fEditor.getDocumentProvider().getDocument(
fEditor.getEditorInput());
fIncludesScanner = new IncludesScanner(fProject,
(IFileEditorInput) fEditor.getEditorInput());
int pos = selection.getOffset();
// System.out.println(selection.getText());
String filename = getPHPIncludeText(doc, pos);
if (filename != null && !filename.equals("")) {
try {
IFile file = fIncludesScanner.getIncludeFile(filename);
fIncludesScanner.addFile(file);
} catch (Exception e) {
// ignore
}
try {
List list = fIncludesScanner.getList();
if (list != null && list.size() > 0) {
// String workspaceLocation =
// PHPeclipsePlugin.getWorkspace().getRoot().getLocation().toString();
String workspaceLocation = fProject.getFullPath()
.toString()
+ File.separatorChar;
ListSelectionDialog listSelectionDialog = new ListSelectionDialog(
PHPeclipsePlugin.getDefault().getWorkbench()
.getActiveWorkbenchWindow().getShell(),
list, new ListContentProvider(),
new LabelProvider(),
"Select the includes to open.");
listSelectionDialog.setTitle("Multiple includes found");
if (listSelectionDialog.open() == Window.OK) {
Object[] locations = listSelectionDialog
.getResult();
if (locations != null) {
try {
for (int i = 0; i < locations.length; i++) {
// PHPIdentifierLocation location =
// (PHPIdentifierLocation)
// locations[i];
String openFilename = workspaceLocation
+ ((String) locations[i]);
PHPeclipsePlugin.getDefault()
.openFileInTextEditor(
openFilename);
}
} catch (CoreException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
} catch (Exception e) {
}
}
}
}
public void setActiveEditor(IAction action, IEditorPart targetEditor) {
if (targetEditor != null && (targetEditor instanceof PHPEditor)) {
fEditor = (PHPEditor) targetEditor;
}
}
private String getPHPIncludeText(IDocument doc, int pos) {
Point word = null;
int start = -1;
int end = -1;
try {
int position = pos;
char character;
while (position >= 0) {
character = doc.getChar(position);
if ((character == '\"') || (character == '\'')
|| (character == '\r') || (character == '\n'))
break;
--position;
}
start = position;
position = pos;
int length = doc.getLength();
while (position < length) {
character = doc.getChar(position);
if ((character == '\"') || (character == '\'')
|| (character == '\r') || (character == '\n'))
break;
++position;
}
start++;
end = position;
if (end > start)
word = new Point(start, end - start);
} catch (BadLocationException x) {
}
if (word != null) {
try {
return doc.get(word.x, word.y);
} catch (BadLocationException e) {
}
}
return "";
}
}
The table below shows all metrics for PHPOpenAllIncludesEditorAction.java.




