Author: yzhishko
Date: 2010-06-03 08:21:57 -0400 (Thu, 03 Jun 2010)
New Revision: 22510
Added:
trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/jsf2/refactoring/RefactoringActionFactory.java
trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/jsf2/refactoring/RefactoringActionManager.java
trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/jsf2/refactoring/action/
trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/jsf2/refactoring/action/rename/
trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/jsf2/refactoring/action/rename/CompositeAttributeRenameDescriptor.java
trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/jsf2/refactoring/action/rename/CompositeAttributeRenameProcessor.java
trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/jsf2/refactoring/action/rename/CompositeAttributeRenameRefactoringWizard.java
trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/jsf2/refactoring/action/rename/IRenameDescriptor.java
trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/jsf2/refactoring/action/rename/RenameAction.java
trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/jsf2/refactoring/action/rename/RenameRefactoring.java
trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/jsf2/refactoring/action/rename/RenameUserInterfaceManager.java
trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/jsf2/refactoring/action/rename/RenameUserInterfaceStarter.java
trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/jsf2/refactoring/core/
trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/jsf2/refactoring/core/StructuredChanges.java
trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/jsf2/refactoring/core/StructuredTextFileChange.java
trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/jsf2/refactoring/view/
trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/jsf2/refactoring/view/StructuredChangesPreviewViewer.java
Modified:
trunk/jsf/plugins/org.jboss.tools.jsf/META-INF/MANIFEST.MF
trunk/jsf/plugins/org.jboss.tools.jsf/plugin.xml
trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/jsf2/util/JSF2ComponentUtil.java
Log:
https://jira.jboss.org/browse/JBIDE-5943 - possibility to refactor jsf component
attributes names was added.
https://jira.jboss.org/browse/JBIDE-6276 - primary preview was created
Modified: trunk/jsf/plugins/org.jboss.tools.jsf/META-INF/MANIFEST.MF
===================================================================
--- trunk/jsf/plugins/org.jboss.tools.jsf/META-INF/MANIFEST.MF 2010-06-03 12:20:23 UTC
(rev 22509)
+++ trunk/jsf/plugins/org.jboss.tools.jsf/META-INF/MANIFEST.MF 2010-06-03 12:21:57 UTC
(rev 22510)
@@ -47,7 +47,10 @@
org.eclipse.jst.j2ee,
org.eclipse.ui.ide,
org.eclipse.wst.html.core;bundle-version="1.1.300",
- org.eclipse.wst.sse.ui;bundle-version="1.1.102"
+ org.eclipse.wst.sse.ui;bundle-version="1.1.102",
+ org.eclipse.ltk.ui.refactoring,
+ org.eclipse.core.expressions;bundle-version="3.4.100",
+ org.jboss.tools.common.text.ext;bundle-version="3.1.0"
Bundle-Version: 3.1.0.qualifier
Bundle-ActivationPolicy: lazy
Bundle-RequiredExecutionEnvironment: J2SE-1.5
Modified: trunk/jsf/plugins/org.jboss.tools.jsf/plugin.xml
===================================================================
--- trunk/jsf/plugins/org.jboss.tools.jsf/plugin.xml 2010-06-03 12:20:23 UTC (rev 22509)
+++ trunk/jsf/plugins/org.jboss.tools.jsf/plugin.xml 2010-06-03 12:21:57 UTC (rev 22510)
@@ -645,4 +645,79 @@
</enablement>
</moveParticipant>
</extension>
+ <extension
+ point="org.eclipse.ui.menus">
+ <menuContribution
+ locationURI="popup:refactorPopupMenuId">
+ <command
+ commandId="org.eclipse.jdt.ui.edit.text.java.rename.element"
+ label="Re&name"
+ style="push">
+ <visibleWhen
+ checkEnabled="false">
+ <reference
+ definitionId="org.jboss.tools.ui.structuredEditor">
+ </reference>
+ </visibleWhen>
+ </command>
+ </menuContribution>
+ <menuContribution
+ locationURI="menu:refactorMenuId">
+ <command
+ commandId="org.eclipse.jdt.ui.edit.text.java.rename.element"
+ label="Re&name"
+ style="push">
+ <visibleWhen
+ checkEnabled="false">
+ <reference
+ definitionId="org.jboss.tools.ui.structuredEditor">
+ </reference>
+ </visibleWhen>
+ </command>
+ </menuContribution>
+ </extension>
+ <extension
+ point="org.eclipse.ui.handlers">
+ <handler
+
class="org.jboss.tools.jsf.jsf2.refactoring.action.rename.RenameAction"
+ commandId="org.eclipse.jdt.ui.edit.text.java.rename.element">
+ </handler>
+ </extension>
+ <extension
+ point="org.eclipse.ui.editorActions">
+ <editorContribution
+ id="org.jboss.tools.jsf.jsf2.refactor.rename"
+ targetID="org.jboss.tools.jst.jsp.jspeditor.JSPTextEditor">
+ <action
+
class="org.jboss.tools.jsf.jsf2.refactoring.action.rename.RenameAction"
+ definitionId="org.eclipse.jdt.ui.edit.text.java.rename.element"
+ id="org.eclipse.jdt.ui.edit.text.java.rename.element"
+ label="Re&name"
+ style="push">
+ </action>
+ </editorContribution>
+ <editorContribution
+ id="org.jboss.tools.jsf.jsf2.refactor.rename"
+ targetID="org.jboss.tools.jst.jsp.jspeditor.HTMLTextEditor">
+ <action
+
class="org.jboss.tools.jsf.jsf2.refactoring.action.rename.RenameAction"
+ definitionId="org.eclipse.jdt.ui.edit.text.java.rename.element"
+ id="org.eclipse.jdt.ui.edit.text.java.rename.element"
+ label="Re&name"
+ style="push">
+ </action>
+ </editorContribution>
+ </extension>
+ <extension
+ point="org.eclipse.ltk.ui.refactoring.changePreviewViewers">
+ <changePreviewViewer
+
class="org.jboss.tools.jsf.jsf2.refactoring.view.StructuredChangesPreviewViewer"
+ id="org.jboss.tools.jsf.jsf2.refactor.structuredpreview">
+ <enablement>
+ <instanceof
+
value="org.jboss.tools.jsf.jsf2.refactoring.core.StructuredChanges">
+ </instanceof>
+ </enablement>
+ </changePreviewViewer>
+ </extension>
</plugin>
Added:
trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/jsf2/refactoring/RefactoringActionFactory.java
===================================================================
---
trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/jsf2/refactoring/RefactoringActionFactory.java
(rev 0)
+++
trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/jsf2/refactoring/RefactoringActionFactory.java 2010-06-03
12:21:57 UTC (rev 22510)
@@ -0,0 +1,74 @@
+package org.jboss.tools.jsf.jsf2.refactoring;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.jface.text.source.ISourceViewer;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.ui.IFileEditorInput;
+import org.eclipse.wst.sse.ui.StructuredTextEditor;
+import org.eclipse.wst.xml.core.internal.provisional.document.IDOMAttr;
+import
org.jboss.tools.jsf.jsf2.refactoring.action.rename.CompositeAttributeRenameDescriptor;
+import org.jboss.tools.jsf.jsf2.refactoring.action.rename.IRenameDescriptor;
+import org.jboss.tools.jsf.jsf2.util.JSF2ResourceUtil;
+
+@SuppressWarnings("restriction")
+public class RefactoringActionFactory {
+
+ public static IRenameDescriptor createRenameDescriptor(
+ StructuredTextEditor editorPart) {
+ ISelection selection = editorPart.getEditorSite()
+ .getSelectionProvider().getSelection();
+ if (selection instanceof IStructuredSelection) {
+ IStructuredSelection structuredSelection = (IStructuredSelection) selection;
+ if (structuredSelection.size() > 1) {
+ return null;
+ }
+ Object object = structuredSelection.getFirstElement();
+ if (object instanceof IDOMAttr) {
+ return createRenameDescriptor((IDOMAttr) object, editorPart
+ .getTextViewer(), ((IFileEditorInput) editorPart
+ .getEditorInput()).getFile());
+ }
+ }
+ return null;
+ }
+
+ public static IRenameDescriptor createRenameDescriptor(IDOMAttr attr,
+ ISourceViewer sourceViewer, IFile file) {
+ IRenameDescriptor renameDescriptor = null;
+ String uri = createJSF2URIFromPath(file.getParent().getFullPath());
+ if (JSF2ResourceUtil.JSF2_URI_PREFIX.equals(uri)) {
+ return renameDescriptor;
+ }
+ if (!attr.getOwnerElement().getNamespaceURI().trim().equalsIgnoreCase(
+ JSF2ResourceUtil.JSF2_URI_PREFIX)) {
+ return renameDescriptor;
+ }
+ if (!"attribute".equals(attr.getOwnerElement().getLocalName())) {
//$NON-NLS-1$
+ return renameDescriptor;
+ }
+ int offset = sourceViewer.getSelectedRange().x;
+ if (offset > attr.getValueRegionStartOffset()
+ && offset < attr.getValueRegionStartOffset()
+ + attr.getValueRegionText().length()) {
+ renameDescriptor = new CompositeAttributeRenameDescriptor(attr, file, uri);
+ }
+ return renameDescriptor;
+ }
+
+ private static String createJSF2URIFromPath(IPath path) {
+ StringBuilder uri = new StringBuilder(""); //$NON-NLS-1$
+ String[] segments = path.segments();
+ if (segments.length > 3) {
+ if (segments[2].equals("resources")) { //$NON-NLS-1$
+ for (int i = 3; i < segments.length; i++) {
+ uri.append("/" + segments[i]); //$NON-NLS-1$
+ }
+ }
+ }
+ uri.insert(0, JSF2ResourceUtil.JSF2_URI_PREFIX);
+ return uri.toString();
+ }
+
+}
Added:
trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/jsf2/refactoring/RefactoringActionManager.java
===================================================================
---
trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/jsf2/refactoring/RefactoringActionManager.java
(rev 0)
+++
trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/jsf2/refactoring/RefactoringActionManager.java 2010-06-03
12:21:57 UTC (rev 22510)
@@ -0,0 +1,73 @@
+package org.jboss.tools.jsf.jsf2.refactoring;
+
+import java.util.HashSet;
+import java.util.Set;
+import org.eclipse.core.expressions.EvaluationContext;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.jdt.internal.ui.refactoring.RefactoringMessages;
+import org.eclipse.jdt.internal.ui.refactoring.UserInterfaceStarter;
+import org.eclipse.jdt.ui.refactoring.RefactoringSaveHelper;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode;
+import org.jboss.tools.jsf.jsf2.refactoring.action.rename.IRenameDescriptor;
+import org.jboss.tools.jsf.jsf2.refactoring.action.rename.RenameUserInterfaceManager;
+
+@SuppressWarnings("restriction")
+public class RefactoringActionManager {
+
+ public static final String REFACTOR_RENAME_ACTION_ID =
"_refactor_rename_action_id"; //$NON-NLS-1$
+
+ private static final RefactoringActionManager instance = new
RefactoringActionManager();
+
+ private RefactoringActionManager() {
+
+ }
+
+ public static RefactoringActionManager getManager() {
+ return instance;
+ }
+
+ public boolean checkActionAvailable(String actionID, IDOMNode node) {
+ return getAvailableActionIDs(node).contains(actionID);
+ }
+
+ public boolean checkActionAvailable(String actionID,
+ EvaluationContext context) {
+ return getAvailableActionIDs(context).contains(actionID);
+ }
+
+ public Set<String> getAvailableActionIDs(IDOMNode node) {
+ Set<String> ids = new HashSet<String>();
+ return ids;
+ }
+
+ public Set<String> getAvailableActionIDs(EvaluationContext context) {
+ System.out.println(context.getDefaultVariable());
+ Set<String> ids = new HashSet<String>();
+ return ids;
+ }
+
+ public void renameWithAction(IAction action, IRenameDescriptor descriptor) {
+ Shell parent = PlatformUI.getWorkbench().getActiveWorkbenchWindow()
+ .getShell();
+ if (descriptor == null) {
+ MessageDialog.openInformation(parent,
+ RefactoringMessages.RenameAction_rename,
+ "Refactoring is not available in the current place"); //$NON-NLS-1$
+ return;
+ }
+ descriptor.getRenameRefactoring().setProcessor(
+ descriptor.getRefactoringProcessor());
+ UserInterfaceStarter starter = RenameUserInterfaceManager.getDefault()
+ .getStarter(descriptor.getRenameRefactoring());
+ try {
+ starter.activate(descriptor.getRenameRefactoring(), parent,
+ RefactoringSaveHelper.SAVE_NOTHING);
+ } catch (CoreException e) {
+ e.printStackTrace();
+ }
+ }
+}
Added:
trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/jsf2/refactoring/action/rename/CompositeAttributeRenameDescriptor.java
===================================================================
---
trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/jsf2/refactoring/action/rename/CompositeAttributeRenameDescriptor.java
(rev 0)
+++
trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/jsf2/refactoring/action/rename/CompositeAttributeRenameDescriptor.java 2010-06-03
12:21:57 UTC (rev 22510)
@@ -0,0 +1,45 @@
+package org.jboss.tools.jsf.jsf2.refactoring.action.rename;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.ltk.core.refactoring.participants.RefactoringProcessor;
+import org.eclipse.wst.xml.core.internal.provisional.document.IDOMAttr;
+
+
+@SuppressWarnings("restriction")
+public class CompositeAttributeRenameDescriptor implements IRenameDescriptor{
+
+ private String currentAttrName;
+ private RenameRefactoring refactoring;
+ private CompositeAttributeRenameProcessor processor;
+
+ public CompositeAttributeRenameDescriptor(IDOMAttr attr, IFile file, String URI) {
+ this.setCurrentAttrName(attr.getValue());
+ refactoring = new RenameRefactoring();
+ processor = new CompositeAttributeRenameProcessor(file.getProject());
+ processor.setCurrentAttrName(getCurrentName());
+ processor.setAttrToRename(attr);
+ processor.setBaseFile(file);
+ processor.setURI(URI);
+ }
+
+ public RenameUserInterfaceManager getInterfaceManager() {
+ return RenameUserInterfaceManager.getDefault();
+ }
+
+ public RenameRefactoring getRenameRefactoring() {
+ return refactoring;
+ }
+
+ public void setCurrentAttrName(String currentAttrName) {
+ this.currentAttrName = currentAttrName;
+ }
+
+ public String getCurrentName() {
+ return currentAttrName;
+ }
+
+ public RefactoringProcessor getRefactoringProcessor() {
+ return processor;
+ }
+
+}
Added:
trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/jsf2/refactoring/action/rename/CompositeAttributeRenameProcessor.java
===================================================================
---
trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/jsf2/refactoring/action/rename/CompositeAttributeRenameProcessor.java
(rev 0)
+++
trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/jsf2/refactoring/action/rename/CompositeAttributeRenameProcessor.java 2010-06-03
12:21:57 UTC (rev 22510)
@@ -0,0 +1,209 @@
+package org.jboss.tools.jsf.jsf2.refactoring.action.rename;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.Map.Entry;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.OperationCanceledException;
+import org.eclipse.jdt.internal.corext.refactoring.changes.TextChangeCompatibility;
+import org.eclipse.jdt.internal.corext.refactoring.tagging.INameUpdating;
+import org.eclipse.ltk.core.refactoring.Change;
+import org.eclipse.ltk.core.refactoring.GroupCategorySet;
+import org.eclipse.ltk.core.refactoring.RefactoringStatus;
+import org.eclipse.ltk.core.refactoring.participants.CheckConditionsContext;
+import org.eclipse.ltk.core.refactoring.participants.RefactoringParticipant;
+import org.eclipse.ltk.core.refactoring.participants.RenameProcessor;
+import org.eclipse.ltk.core.refactoring.participants.SharableParticipants;
+import org.jboss.tools.jsf.jsf2.refactoring.core.StructuredChanges;
+import org.jboss.tools.jsf.jsf2.refactoring.core.StructuredTextFileChange;
+import org.jboss.tools.jsf.jsf2.util.JSF2ComponentUtil;
+import org.w3c.dom.Attr;
+import org.eclipse.ltk.core.refactoring.GroupCategory;
+import org.eclipse.text.edits.ReplaceEdit;
+import org.eclipse.wst.xml.core.internal.provisional.document.IDOMAttr;
+import org.eclipse.wst.xml.core.internal.provisional.document.IDOMElement;
+import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode;
+
+@SuppressWarnings("restriction")
+public class CompositeAttributeRenameProcessor extends RenameProcessor
+ implements INameUpdating {
+
+ private static final Pattern PATTERN =
Pattern.compile("[a-zA-Z_][a-zA-Z0-9_.]*+"); //$NON-NLS-1$
+ private static final GroupCategorySet CATEGORY_COMPOSITE_ATTR_RENAME = new
GroupCategorySet(
+ new GroupCategory(
+ "org.jboss.tools.jsf.jsf2.refactoring.rename.composite.attr.type",
"Rename composite attribute changes", "Changes to rename composite
attribute")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ public static String IDENTIFIER =
"org.jboss.tools.jsf.jsf2.refactor.compositeattrrenameprocessor"; //$NON-NLS-1$
+ private String newAttrName;
+ private String currentAttrName;
+ private IProject project;
+ private String URI;
+ private IFile baseFile;
+ private IDOMAttr attrToRename;
+
+ public void setCurrentAttrName(String currentAttrName) {
+ this.currentAttrName = currentAttrName;
+ }
+
+ public CompositeAttributeRenameProcessor(IProject project) {
+ this.setProject(project);
+ }
+
+ @Override
+ public RefactoringStatus checkFinalConditions(IProgressMonitor pm,
+ CheckConditionsContext context) throws CoreException,
+ OperationCanceledException {
+ return null;
+ }
+
+ @Override
+ public RefactoringStatus checkInitialConditions(IProgressMonitor pm)
+ throws CoreException, OperationCanceledException {
+ return null;
+ }
+
+ @Override
+ public Change createChange(IProgressMonitor pm) throws CoreException,
+ OperationCanceledException {
+ StructuredChanges changes = new StructuredChanges(
+ "Composite attribute name changes"); //$NON-NLS-1$
+ StructuredTextFileChange baseFileChange = new
StructuredTextFileChange(baseFile.getFullPath().toOSString(), baseFile);
+ ReplaceEdit edit = new ReplaceEdit(attrToRename.getValueRegionStartOffset()+1,
attrToRename.getValue().length(), getNewElementName());
+ TextChangeCompatibility.addTextEdit(baseFileChange, "Rename composite attribute
name", edit, CATEGORY_COMPOSITE_ATTR_RENAME); //$NON-NLS-1$
+ changes.add(baseFileChange);
+ Map<IFile, List<IDOMNode>> nodesMap = JSF2ComponentUtil
+ .findCompositeComponentsWithURI(getProject(), getURI());
+ Set<Entry<IFile, List<IDOMNode>>> entries = nodesMap.entrySet();
+ for (Entry<IFile, List<IDOMNode>> entry : entries) {
+ StructuredTextFileChange fileChange = createFileChange(entry
+ .getKey(), entry.getValue());
+ if (fileChange != null) {
+ changes.add(fileChange);
+ }
+ }
+ return changes;
+ }
+
+ private StructuredTextFileChange createFileChange(IFile file,
+ List<IDOMNode> nodeList) {
+ StructuredTextFileChange fileChange = null;
+ for (IDOMNode domNode : nodeList) {
+ if (domNode instanceof IDOMElement) {
+ IDOMElement element = (IDOMElement) domNode;
+ Attr attr = element.getAttributeNode(getCurrentElementName());
+ if (attr instanceof IDOMAttr) {
+ IDOMAttr domAttr = (IDOMAttr) attr;
+ if (fileChange == null) {
+ fileChange = new StructuredTextFileChange(file
+ .getFullPath().toOSString(), file);
+ }
+ ReplaceEdit edit = new ReplaceEdit(
+ domAttr.getStartOffset(), domAttr.getName()
+ .length(), getNewElementName());
+ TextChangeCompatibility
+ .addTextEdit(
+ fileChange,
+ "Rename Compoiste Attribute", edit, CATEGORY_COMPOSITE_ATTR_RENAME);
//$NON-NLS-1$
+ }
+ }
+ }
+ return fileChange;
+ }
+
+ @Override
+ public Object[] getElements() {
+ return null;
+ }
+
+ @Override
+ public String getIdentifier() {
+ return IDENTIFIER;
+ }
+
+ @Override
+ public String getProcessorName() {
+ return "Rename Composite Attribute"; //$NON-NLS-1$
+ }
+
+ @Override
+ public boolean isApplicable() throws CoreException {
+ return true;
+ }
+
+ @Override
+ public RefactoringParticipant[] loadParticipants(RefactoringStatus status,
+ SharableParticipants sharedParticipants) throws CoreException {
+ return null;
+ }
+
+ public RefactoringStatus checkNewElementName(String newName)
+ throws CoreException {
+ RefactoringStatus status = null;
+ Matcher matcher = PATTERN.matcher(getNewElementName());
+ int includings = 0;
+ String matchString = null;
+ while (matcher.find()) {
+ includings++;
+ matchString = matcher.group();
+ }
+ if (includings != 1 || !matchString.equals(getNewElementName())) {
+ status = RefactoringStatus.createFatalErrorStatus("Attribute name is not
valid"); //$NON-NLS-1$
+ }
+ return status;
+ }
+
+ public String getCurrentElementName() {
+ return currentAttrName;
+ }
+
+ public Object getNewElement() throws CoreException {
+ return null;
+ }
+
+ public String getNewElementName() {
+ return newAttrName;
+ }
+
+ public void setNewElementName(String newName) {
+ this.newAttrName = newName;
+ }
+
+ public void setProject(IProject project) {
+ this.project = project;
+ }
+
+ public IProject getProject() {
+ return project;
+ }
+
+ public void setURI(String uRI) {
+ URI = uRI;
+ }
+
+ public String getURI() {
+ return URI;
+ }
+
+ public void setBaseFile(IFile baseFile) {
+ this.baseFile = baseFile;
+ }
+
+ public IFile getBaseFile() {
+ return baseFile;
+ }
+
+ public void setAttrToRename(IDOMAttr attrToRename) {
+ this.attrToRename = attrToRename;
+ }
+
+ public IDOMAttr getAttrToRename() {
+ return attrToRename;
+ }
+
+}
Added:
trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/jsf2/refactoring/action/rename/CompositeAttributeRenameRefactoringWizard.java
===================================================================
---
trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/jsf2/refactoring/action/rename/CompositeAttributeRenameRefactoringWizard.java
(rev 0)
+++
trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/jsf2/refactoring/action/rename/CompositeAttributeRenameRefactoringWizard.java 2010-06-03
12:21:57 UTC (rev 22510)
@@ -0,0 +1,19 @@
+package org.jboss.tools.jsf.jsf2.refactoring.action.rename;
+
+import org.eclipse.jdt.internal.ui.IJavaHelpContextIds;
+import org.eclipse.jdt.internal.ui.JavaPluginImages;
+import org.eclipse.ltk.core.refactoring.Refactoring;
+
+@SuppressWarnings("restriction")
+public class CompositeAttributeRenameRefactoringWizard extends
+ org.eclipse.jdt.internal.ui.refactoring.reorg.RenameRefactoringWizard {
+
+ public CompositeAttributeRenameRefactoringWizard(Refactoring refactoring) {
+ super(refactoring,
+ "Rename Composite Attribute", //$NON-NLS-1$
+ "Enter New Name for Composite Attribute", //$NON-NLS-1$
+ JavaPluginImages.DESC_WIZBAN_REFACTOR,
+ IJavaHelpContextIds.RENAME_LOCAL_VARIABLE_WIZARD_PAGE);
+ }
+
+}
Added:
trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/jsf2/refactoring/action/rename/IRenameDescriptor.java
===================================================================
---
trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/jsf2/refactoring/action/rename/IRenameDescriptor.java
(rev 0)
+++
trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/jsf2/refactoring/action/rename/IRenameDescriptor.java 2010-06-03
12:21:57 UTC (rev 22510)
@@ -0,0 +1,15 @@
+package org.jboss.tools.jsf.jsf2.refactoring.action.rename;
+
+import org.eclipse.ltk.core.refactoring.participants.RefactoringProcessor;
+
+public interface IRenameDescriptor {
+
+ RenameRefactoring getRenameRefactoring();
+
+ RenameUserInterfaceManager getInterfaceManager();
+
+ String getCurrentName();
+
+ RefactoringProcessor getRefactoringProcessor();
+
+}
Added:
trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/jsf2/refactoring/action/rename/RenameAction.java
===================================================================
---
trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/jsf2/refactoring/action/rename/RenameAction.java
(rev 0)
+++
trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/jsf2/refactoring/action/rename/RenameAction.java 2010-06-03
12:21:57 UTC (rev 22510)
@@ -0,0 +1,79 @@
+package org.jboss.tools.jsf.jsf2.refactoring.action.rename;
+
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.jdt.internal.ui.refactoring.RefactoringMessages;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.ui.IEditorActionDelegate;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IFileEditorInput;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.wst.sse.ui.StructuredTextEditor;
+import org.jboss.tools.common.text.ext.IMultiPageEditor;
+import org.jboss.tools.jsf.jsf2.refactoring.RefactoringActionFactory;
+import org.jboss.tools.jsf.jsf2.refactoring.RefactoringActionManager;
+
+@SuppressWarnings("restriction")
+public class RenameAction extends AbstractHandler implements
+ IEditorActionDelegate {
+
+ private StructuredTextEditor textEditor;
+
+ private IRenameDescriptor descriptor;
+
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ return null;
+ }
+
+ @Override
+ public void setEnabled(Object evaluationContext) {
+ }
+
+ @Override
+ public boolean isHandled() {
+ return descriptor != null;
+ }
+
+ public void setActiveEditor(IAction action, IEditorPart targetEditor) {
+ if (targetEditor instanceof IMultiPageEditor) {
+ textEditor = ((IMultiPageEditor) targetEditor).getSourceEditor();
+ }
+ }
+
+ public void run(IAction action) {
+ if (textEditor == null) {
+ reportRefactoringInfo();
+ } else {
+ IEditorInput input = textEditor.getEditorInput();
+ if (!(input instanceof IFileEditorInput)) {
+ reportRefactoringInfo();
+ return;
+ }
+ if (((IFileEditorInput) textEditor.getEditorInput()).getFile()
+ .getProject() == null) {
+ reportRefactoringInfo();
+ return;
+ }
+ descriptor = RefactoringActionFactory
+ .createRenameDescriptor(textEditor);
+ RefactoringActionManager.getManager().renameWithAction(action,
+ descriptor);
+ }
+ descriptor = null;
+ }
+
+ public void selectionChanged(IAction action, ISelection selection) {
+ }
+
+ private void reportRefactoringInfo() {
+ MessageDialog.openInformation(PlatformUI.getWorkbench()
+ .getActiveWorkbenchWindow().getShell(),
+ RefactoringMessages.RenameAction_rename,
+ "Refactoring is not available in the current place"); //$NON-NLS-1$
+ }
+
+}
\ No newline at end of file
Added:
trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/jsf2/refactoring/action/rename/RenameRefactoring.java
===================================================================
---
trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/jsf2/refactoring/action/rename/RenameRefactoring.java
(rev 0)
+++
trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/jsf2/refactoring/action/rename/RenameRefactoring.java 2010-06-03
12:21:57 UTC (rev 22510)
@@ -0,0 +1,8 @@
+package org.jboss.tools.jsf.jsf2.refactoring.action.rename;
+
+import org.eclipse.ltk.core.refactoring.participants.ProcessorBasedRefactoring;
+
+@SuppressWarnings("deprecation")
+public class RenameRefactoring extends ProcessorBasedRefactoring{
+
+}
Added:
trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/jsf2/refactoring/action/rename/RenameUserInterfaceManager.java
===================================================================
---
trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/jsf2/refactoring/action/rename/RenameUserInterfaceManager.java
(rev 0)
+++
trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/jsf2/refactoring/action/rename/RenameUserInterfaceManager.java 2010-06-03
12:21:57 UTC (rev 22510)
@@ -0,0 +1,18 @@
+package org.jboss.tools.jsf.jsf2.refactoring.action.rename;
+
+import org.eclipse.jdt.internal.ui.refactoring.UserInterfaceManager;
+
+@SuppressWarnings("restriction")
+public class RenameUserInterfaceManager extends UserInterfaceManager {
+
+ private static final RenameUserInterfaceManager fgInstance= new
RenameUserInterfaceManager();
+
+ public static RenameUserInterfaceManager getDefault() {
+ return fgInstance;
+ }
+
+ private RenameUserInterfaceManager() {
+ put(CompositeAttributeRenameProcessor.class, RenameUserInterfaceStarter.class,
CompositeAttributeRenameRefactoringWizard.class);
+ }
+
+}
Added:
trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/jsf2/refactoring/action/rename/RenameUserInterfaceStarter.java
===================================================================
---
trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/jsf2/refactoring/action/rename/RenameUserInterfaceStarter.java
(rev 0)
+++
trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/jsf2/refactoring/action/rename/RenameUserInterfaceStarter.java 2010-06-03
12:21:57 UTC (rev 22510)
@@ -0,0 +1,8 @@
+package org.jboss.tools.jsf.jsf2.refactoring.action.rename;
+
+import org.eclipse.jdt.internal.ui.refactoring.UserInterfaceStarter;
+
+@SuppressWarnings("restriction")
+public class RenameUserInterfaceStarter extends UserInterfaceStarter {
+
+}
Added:
trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/jsf2/refactoring/core/StructuredChanges.java
===================================================================
---
trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/jsf2/refactoring/core/StructuredChanges.java
(rev 0)
+++
trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/jsf2/refactoring/core/StructuredChanges.java 2010-06-03
12:21:57 UTC (rev 22510)
@@ -0,0 +1,16 @@
+package org.jboss.tools.jsf.jsf2.refactoring.core;
+
+import org.eclipse.ltk.core.refactoring.Change;
+import org.eclipse.ltk.core.refactoring.CompositeChange;
+
+public class StructuredChanges extends CompositeChange {
+
+ public StructuredChanges(String name, Change[] children) {
+ super(name, children);
+ }
+
+ public StructuredChanges(String name){
+ super(name);
+ }
+
+}
Added:
trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/jsf2/refactoring/core/StructuredTextFileChange.java
===================================================================
---
trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/jsf2/refactoring/core/StructuredTextFileChange.java
(rev 0)
+++
trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/jsf2/refactoring/core/StructuredTextFileChange.java 2010-06-03
12:21:57 UTC (rev 22510)
@@ -0,0 +1,43 @@
+package org.jboss.tools.jsf.jsf2.refactoring.core;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.jface.text.IDocument;
+import org.eclipse.ltk.core.refactoring.TextFileChange;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.wst.sse.ui.StructuredTextEditor;
+import org.jboss.tools.common.text.ext.IMultiPageEditor;
+
+public class StructuredTextFileChange extends TextFileChange{
+
+ public StructuredTextFileChange(String name, IFile file) {
+ super(name, file);
+ }
+
+
+ @Override
+ protected void releaseDocument(final IDocument document, IProgressMonitor pm)
+ throws CoreException {
+ super.releaseDocument(document, pm);
+ Display.getDefault().asyncExec(new Runnable() {
+ public void run() {
+ IEditorPart[] editors =
PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getDirtyEditors();
+ for (IEditorPart editorPart : editors) {
+ if (editorPart instanceof IMultiPageEditor) {
+ StructuredTextEditor editor = ((IMultiPageEditor) editorPart).getSourceEditor();
+ IDocument editorDocument = editor.getTextViewer().getDocument();
+ if (document == editorDocument) {
+ PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().saveEditor(editorPart,
false);
+ return;
+ }
+ }
+ }
+ }
+
+ });
+ }
+
+}
Added:
trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/jsf2/refactoring/view/StructuredChangesPreviewViewer.java
===================================================================
---
trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/jsf2/refactoring/view/StructuredChangesPreviewViewer.java
(rev 0)
+++
trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/jsf2/refactoring/view/StructuredChangesPreviewViewer.java 2010-06-03
12:21:57 UTC (rev 22510)
@@ -0,0 +1,8 @@
+package org.jboss.tools.jsf.jsf2.refactoring.view;
+
+import org.eclipse.ltk.internal.ui.refactoring.TextEditChangePreviewViewer;
+
+@SuppressWarnings("restriction")
+public class StructuredChangesPreviewViewer extends TextEditChangePreviewViewer {
+
+}
Modified:
trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/jsf2/util/JSF2ComponentUtil.java
===================================================================
---
trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/jsf2/util/JSF2ComponentUtil.java 2010-06-03
12:20:23 UTC (rev 22509)
+++
trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/jsf2/util/JSF2ComponentUtil.java 2010-06-03
12:21:57 UTC (rev 22510)
@@ -13,12 +13,22 @@
import java.util.ArrayList;
import java.util.HashMap;
+import java.util.Iterator;
import java.util.List;
import java.util.Map;
+import java.util.Set;
+import java.util.Map.Entry;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.runtime.CoreException;
import org.eclipse.wst.xml.core.internal.document.ElementImpl;
import org.eclipse.wst.xml.core.internal.provisional.document.IDOMAttr;
import org.eclipse.wst.xml.core.internal.provisional.document.IDOMDocument;
import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode;
+import org.jboss.tools.jsf.jsf2.model.JSF2ComponentModelManager;
import org.w3c.dom.Element;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
@@ -126,4 +136,53 @@
return false;
}
+ public static Map<IFile, List<IDOMNode>> findCompositeComponentsWithURI(
+ IResource resource, String URI) throws CoreException {
+ Map<IFile, List<IDOMNode>> nodeMap = new HashMap<IFile,
List<IDOMNode>>();
+ findCompositeComponentsWithURI(resource, nodeMap, URI);
+ return nodeMap;
+ }
+
+ private static void findCompositeComponentsWithURI(IResource resource,
+ Map<IFile, List<IDOMNode>> nodeMap, String URI)
+ throws CoreException {
+ if (resource instanceof IFile) {
+ IFile file = (IFile) resource;
+ IDOMDocument document = JSF2ComponentModelManager
+ .getReadableDOMDocument(file);
+ Map<String, List<Element>> map = findCompositeComponents(document);
+ Set<Entry<String, List<Element>>> entries = map.entrySet();
+ List<IDOMNode> nodes = new ArrayList<IDOMNode>();
+ for (Iterator<Entry<String, List<Element>>> iterator = entries
+ .iterator(); iterator.hasNext();) {
+ Entry<String, List<Element>> entry = (Entry<String,
List<Element>>) iterator
+ .next();
+ if (URI.equals(entry.getKey())) {
+ for (Element element : entry.getValue()) {
+ if (element instanceof IDOMNode) {
+ nodes.add((IDOMNode) element);
+ }
+ }
+ }
+ }
+ if (!nodes.isEmpty()) {
+ nodeMap.put(file, nodes);
+ }
+ } else if (resource instanceof IProject) {
+ IResource[] children = ((IProject) resource).members();
+ if (children != null) {
+ for (int i = 0; i < children.length; i++) {
+ findCompositeComponentsWithURI(children[i], nodeMap, URI);
+ }
+ }
+ } else if (resource instanceof IFolder) {
+ IResource[] children = ((IFolder) resource).members();
+ if (children != null) {
+ for (int i = 0; i < children.length; i++) {
+ findCompositeComponentsWithURI(children[i], nodeMap, URI);
+ }
+ }
+ }
+ }
+
}