Author: dazarov
Date: 2010-07-26 12:20:28 -0400 (Mon, 26 Jul 2010)
New Revision: 23729
Added:
trunk/cdi/plugins/org.jboss.tools.cdi.text.ext/src/org/jboss/tools/cdi/text/ext/hyperlink/EventAndObserverMethodHyperlinkDetector.java
trunk/cdi/plugins/org.jboss.tools.cdi.text.ext/src/org/jboss/tools/cdi/text/ext/hyperlink/ObserverMethodHyperlink.java
trunk/cdi/plugins/org.jboss.tools.cdi.text.ext/src/org/jboss/tools/cdi/text/ext/hyperlink/ObserverMethodListHyperlink.java
Removed:
trunk/cdi/plugins/org.jboss.tools.cdi.text.ext/src/org/jboss/tools/cdi/text/ext/hyperlink/EventHyperlinkDetector.java
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.text.ext/plugin.xml
trunk/cdi/plugins/org.jboss.tools.cdi.text.ext/src/org/jboss/tools/cdi/text/ext/CDIExtensionsMessages.java
trunk/cdi/plugins/org.jboss.tools.cdi.text.ext/src/org/jboss/tools/cdi/text/ext/hyperlink/EventHyperlink.java
trunk/cdi/plugins/org.jboss.tools.cdi.text.ext/src/org/jboss/tools/cdi/text/ext/hyperlink/EventListHyperlink.java
trunk/cdi/plugins/org.jboss.tools.cdi.text.ext/src/org/jboss/tools/cdi/text/ext/messages.properties
Log:
https://jira.jboss.org/browse/JBIDE-3124
Modified: trunk/cdi/plugins/org.jboss.tools.cdi.text.ext/plugin.xml
===================================================================
--- trunk/cdi/plugins/org.jboss.tools.cdi.text.ext/plugin.xml 2010-07-26 16:10:39 UTC (rev
23728)
+++ trunk/cdi/plugins/org.jboss.tools.cdi.text.ext/plugin.xml 2010-07-26 16:20:28 UTC (rev
23729)
@@ -25,9 +25,9 @@
<extension
point="org.eclipse.ui.workbench.texteditor.hyperlinkDetectors">
<hyperlinkDetector
-
class="org.jboss.tools.cdi.text.ext.hyperlink.EventHyperlinkDetector"
- id="org.jboss.tools.cdi.text.ext.hyperlink.EventHyperlinkDetector"
- name="%EventHyperlinkDetector"
+
class="org.jboss.tools.cdi.text.ext.hyperlink.EventAndObserverMethodHyperlinkDetector"
+
id="org.jboss.tools.cdi.text.ext.hyperlink.EventAndObserverMethodHyperlinkDetector"
+ name="%EventAndObserverMethodHyperlinkDetector"
targetId="org.eclipse.jdt.ui.javaCode">
</hyperlinkDetector>
</extension>
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.text.ext/src/org/jboss/tools/cdi/text/ext/CDIExtensionsMessages.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.text.ext/src/org/jboss/tools/cdi/text/ext/CDIExtensionsMessages.java 2010-07-26
16:10:39 UTC (rev 23728)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.text.ext/src/org/jboss/tools/cdi/text/ext/CDIExtensionsMessages.java 2010-07-26
16:20:28 UTC (rev 23729)
@@ -27,5 +27,7 @@
public static String CDI_PRODUCER_DISPOSER_HYPERLINK_OPEN_BOUND_DISPOSER;
public static String CDI_PRODUCER_DISPOSER_HYPERLINK_OPEN_BOUND_PRODUCER;
public static String CDI_EVENT_LIST_HYPERLINK_OPEN_OBSERVER_METHODS;
+ public static String CDI_EVENT_LIST_HYPERLINK_OPEN_EVENTS;
public static String CDI_EVENT_HYPERLINK_OPEN_OBSERVER_METHOD;
+ public static String CDI_EVENT_HYPERLINK_OPEN_EVENT;
}
Copied:
trunk/cdi/plugins/org.jboss.tools.cdi.text.ext/src/org/jboss/tools/cdi/text/ext/hyperlink/EventAndObserverMethodHyperlinkDetector.java
(from rev 23720,
trunk/cdi/plugins/org.jboss.tools.cdi.text.ext/src/org/jboss/tools/cdi/text/ext/hyperlink/EventHyperlinkDetector.java)
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.text.ext/src/org/jboss/tools/cdi/text/ext/hyperlink/EventAndObserverMethodHyperlinkDetector.java
(rev 0)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.text.ext/src/org/jboss/tools/cdi/text/ext/hyperlink/EventAndObserverMethodHyperlinkDetector.java 2010-07-26
16:20:28 UTC (rev 23729)
@@ -0,0 +1,137 @@
+/*******************************************************************************
+ * Copyright (c) 2010 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:
+ * Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.jboss.tools.cdi.text.ext.hyperlink;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Set;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.jdt.core.ICodeAssist;
+import org.eclipse.jdt.core.ICompilationUnit;
+import org.eclipse.jdt.core.IJavaElement;
+import org.eclipse.jdt.core.IMethod;
+import org.eclipse.jdt.core.JavaModelException;
+import org.eclipse.jdt.internal.core.ResolvedBinaryType;
+import org.eclipse.jdt.internal.core.ResolvedSourceType;
+import org.eclipse.jdt.internal.ui.javaeditor.EditorUtility;
+import org.eclipse.jdt.internal.ui.javaeditor.JavaEditor;
+import org.eclipse.jdt.internal.ui.text.JavaWordFinder;
+import org.eclipse.jface.text.IDocument;
+import org.eclipse.jface.text.IRegion;
+import org.eclipse.jface.text.ITextViewer;
+import org.eclipse.jface.text.hyperlink.AbstractHyperlinkDetector;
+import org.eclipse.jface.text.hyperlink.IHyperlink;
+import org.eclipse.ui.texteditor.ITextEditor;
+import org.jboss.tools.cdi.core.CDICoreNature;
+import org.jboss.tools.cdi.core.CDIUtil;
+import org.jboss.tools.cdi.core.IBean;
+import org.jboss.tools.cdi.core.ICDIProject;
+import org.jboss.tools.cdi.core.IInjectionPoint;
+import org.jboss.tools.cdi.core.IInjectionPointParameter;
+import org.jboss.tools.cdi.core.IObserverMethod;
+import org.jboss.tools.cdi.text.ext.CDIExtensionsPlugin;
+
+public class EventAndObserverMethodHyperlinkDetector extends AbstractHyperlinkDetector{
+
+
+ public IHyperlink[] detectHyperlinks(ITextViewer textViewer,
+ IRegion region, boolean canShowMultipleHyperlinks) {
+ ITextEditor textEditor= (ITextEditor)getAdapter(ITextEditor.class);
+ if (region == null || !canShowMultipleHyperlinks || !(textEditor instanceof
JavaEditor))
+ return null;
+
+ int offset= region.getOffset();
+
+ IJavaElement input= EditorUtility.getEditorInputJavaElement(textEditor, false);
+ if (input == null)
+ return null;
+
+ if (input.getResource() == null || input.getResource().getProject() == null)
+ return null;
+
+ IDocument document=
textEditor.getDocumentProvider().getDocument(textEditor.getEditorInput());
+ IRegion wordRegion= JavaWordFinder.findWord(document, offset);
+ if (wordRegion == null)
+ return null;
+
+ IFile file = null;
+
+ try {
+ IResource resource = input.getCorrespondingResource();
+ if (resource instanceof IFile)
+ file = (IFile) resource;
+ } catch (JavaModelException e) {
+ CDIExtensionsPlugin.log(e);
+ }
+
+ if(file == null)
+ return null;
+ CDICoreNature cdiNature = CDIUtil.getCDINatureWithProgress(file.getProject());
+ if(cdiNature == null)
+ return null;
+
+ IJavaElement[] elements = null;
+
+ try {
+ elements = ((ICodeAssist)input).codeSelect(wordRegion.getOffset(),
wordRegion.getLength());
+ if (elements == null)
+ return null;
+
+ ArrayList<IHyperlink> hyperlinks = new ArrayList<IHyperlink>();
+ for (IJavaElement element : elements) {
+ int position = 0;
+ if(element instanceof ResolvedSourceType || element instanceof ResolvedBinaryType){
+ ICompilationUnit cUnit = (ICompilationUnit)input;
+ element = cUnit.getElementAt(wordRegion.getOffset());
+ if(element == null)
+ continue;
+
+ if(element instanceof IMethod){
+ position = offset;
+ }
+ }
+ ICDIProject cdiProject = cdiNature.getDelegate();
+ if(cdiProject != null){
+ IInjectionPoint injectionPoint = findInjectedPoint(cdiProject, element, position,
file);
+ if(injectionPoint != null){
+ Set<IObserverMethod> observerMethods =
cdiProject.resolveObserverMethods(injectionPoint);
+
+ if(observerMethods.size() > 0)
+ hyperlinks.add(new ObserverMethodListHyperlink(textViewer, region,
observerMethods, document));
+
+ if(injectionPoint instanceof IInjectionPointParameter){
+ Set<IInjectionPoint> events =
cdiProject.findObservedEvents((IInjectionPointParameter)injectionPoint);
+
+ if(events.size() > 0)
+ hyperlinks.add(new EventListHyperlink(textViewer, region, events, document));
+ }
+ }
+ }
+ }
+
+ if (hyperlinks != null && !hyperlinks.isEmpty()) {
+ return (IHyperlink[])hyperlinks.toArray(new IHyperlink[hyperlinks.size()]);
+ }
+ } catch (JavaModelException jme) {
+ CDIExtensionsPlugin.log(jme);
+ }
+ return null;
+ }
+
+ private IInjectionPoint findInjectedPoint(ICDIProject cdiProject, IJavaElement element,
int offset, IFile file){
+ Set<IBean> beans = cdiProject.getBeans(file.getFullPath());
+
+ return CDIUtil.findInjectionPoint(beans, element, offset);
+ }
+
+}
Property changes on:
trunk/cdi/plugins/org.jboss.tools.cdi.text.ext/src/org/jboss/tools/cdi/text/ext/hyperlink/EventAndObserverMethodHyperlinkDetector.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.text.ext/src/org/jboss/tools/cdi/text/ext/hyperlink/EventHyperlink.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.text.ext/src/org/jboss/tools/cdi/text/ext/hyperlink/EventHyperlink.java 2010-07-26
16:10:39 UTC (rev 23728)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.text.ext/src/org/jboss/tools/cdi/text/ext/hyperlink/EventHyperlink.java 2010-07-26
16:20:28 UTC (rev 23729)
@@ -17,17 +17,20 @@
import org.eclipse.jface.text.IRegion;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.PartInitException;
+import org.jboss.tools.cdi.core.IInjectionPoint;
+import org.jboss.tools.cdi.core.IInjectionPointField;
+import org.jboss.tools.cdi.core.IInjectionPointMethod;
import org.jboss.tools.cdi.core.IObserverMethod;
import org.jboss.tools.cdi.text.ext.CDIExtensionsMessages;
import org.jboss.tools.cdi.text.ext.CDIExtensionsPlugin;
import org.jboss.tools.common.text.ext.hyperlink.AbstractHyperlink;
public class EventHyperlink extends AbstractHyperlink{
- IObserverMethod observerMethod;
+ IInjectionPoint event;
IRegion region;
- public EventHyperlink(IRegion region, IObserverMethod observerMethod, IDocument
document){
- this.observerMethod = observerMethod;
+ public EventHyperlink(IRegion region, IInjectionPoint event, IDocument document){
+ this.event = event;
this.region = region;
setDocument(document);
}
@@ -41,16 +44,21 @@
protected void doHyperlink(IRegion region) {
IEditorPart part = null;
- if(observerMethod != null && observerMethod.getClassBean() != null){
+ if(event != null && event.getClassBean() != null){
try{
- part = JavaUI.openInEditor(observerMethod.getClassBean().getBeanClass());
+ part = JavaUI.openInEditor(event.getClassBean().getBeanClass());
}catch(JavaModelException ex){
CDIExtensionsPlugin.log(ex);
}catch(PartInitException ex){
CDIExtensionsPlugin.log(ex);
}
- IJavaElement element = observerMethod.getMethod();
+ IJavaElement element = event.getClassBean().getBeanClass();
+ if(event instanceof IInjectionPointField)
+ element = ((IInjectionPointField)event).getField();
+ else if(event instanceof IInjectionPointMethod)
+ element = ((IInjectionPointMethod)event).getMethod();
+
if (part != null) {
JavaUI.revealInEditor(part, element);
}
@@ -61,7 +69,14 @@
@Override
public String getHyperlinkText() {
- return CDIExtensionsMessages.CDI_EVENT_HYPERLINK_OPEN_OBSERVER_METHOD+"
"+observerMethod.getMethod().getElementName();
+ String text = CDIExtensionsMessages.CDI_EVENT_HYPERLINK_OPEN_EVENT+"
"+event.getClassBean().getBeanClass().getElementName();
+
+ if(event instanceof IInjectionPointField)
+ text += "."+((IInjectionPointField)event).getField().getElementName();
+ else if(event instanceof IInjectionPointMethod)
+ text += "."+((IInjectionPointMethod)event).getMethod().getElementName();
+
+ return text;
}
}
Deleted:
trunk/cdi/plugins/org.jboss.tools.cdi.text.ext/src/org/jboss/tools/cdi/text/ext/hyperlink/EventHyperlinkDetector.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.text.ext/src/org/jboss/tools/cdi/text/ext/hyperlink/EventHyperlinkDetector.java 2010-07-26
16:10:39 UTC (rev 23728)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.text.ext/src/org/jboss/tools/cdi/text/ext/hyperlink/EventHyperlinkDetector.java 2010-07-26
16:20:28 UTC (rev 23729)
@@ -1,134 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2010 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:
- * Red Hat, Inc. - initial API and implementation
- ******************************************************************************/
-package org.jboss.tools.cdi.text.ext.hyperlink;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Set;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.jdt.core.ICodeAssist;
-import org.eclipse.jdt.core.ICompilationUnit;
-import org.eclipse.jdt.core.IJavaElement;
-import org.eclipse.jdt.core.IMethod;
-import org.eclipse.jdt.core.JavaModelException;
-import org.eclipse.jdt.internal.core.ResolvedBinaryType;
-import org.eclipse.jdt.internal.core.ResolvedSourceType;
-import org.eclipse.jdt.internal.ui.javaeditor.EditorUtility;
-import org.eclipse.jdt.internal.ui.javaeditor.JavaEditor;
-import org.eclipse.jdt.internal.ui.text.JavaWordFinder;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.jface.text.IRegion;
-import org.eclipse.jface.text.ITextViewer;
-import org.eclipse.jface.text.hyperlink.AbstractHyperlinkDetector;
-import org.eclipse.jface.text.hyperlink.IHyperlink;
-import org.eclipse.ui.texteditor.ITextEditor;
-import org.jboss.tools.cdi.core.CDICoreNature;
-import org.jboss.tools.cdi.core.CDIUtil;
-import org.jboss.tools.cdi.core.IBean;
-import org.jboss.tools.cdi.core.ICDIProject;
-import org.jboss.tools.cdi.core.IInjectionPoint;
-import org.jboss.tools.cdi.core.IObserverMethod;
-import org.jboss.tools.cdi.text.ext.CDIExtensionsPlugin;
-
-public class EventHyperlinkDetector extends AbstractHyperlinkDetector{
-
-
- public IHyperlink[] detectHyperlinks(ITextViewer textViewer,
- IRegion region, boolean canShowMultipleHyperlinks) {
- ITextEditor textEditor= (ITextEditor)getAdapter(ITextEditor.class);
- if (region == null || !canShowMultipleHyperlinks || !(textEditor instanceof
JavaEditor))
- return null;
-
- int offset= region.getOffset();
-
- IJavaElement input= EditorUtility.getEditorInputJavaElement(textEditor, false);
- if (input == null)
- return null;
-
- if (input.getResource() == null || input.getResource().getProject() == null)
- return null;
-
- IDocument document=
textEditor.getDocumentProvider().getDocument(textEditor.getEditorInput());
- IRegion wordRegion= JavaWordFinder.findWord(document, offset);
- if (wordRegion == null)
- return null;
-
- IFile file = null;
-
- try {
- IResource resource = input.getCorrespondingResource();
- if (resource instanceof IFile)
- file = (IFile) resource;
- } catch (JavaModelException e) {
- CDIExtensionsPlugin.log(e);
- }
-
- if(file == null)
- return null;
- CDICoreNature cdiNature = CDIUtil.getCDINatureWithProgress(file.getProject());
- if(cdiNature == null)
- return null;
-
- IJavaElement[] elements = null;
-
- try {
- elements = ((ICodeAssist)input).codeSelect(wordRegion.getOffset(),
wordRegion.getLength());
- if (elements == null)
- return null;
-
- ArrayList<IHyperlink> hyperlinks = new ArrayList<IHyperlink>();
- for (IJavaElement element : elements) {
- int position = 0;
- if(element instanceof ResolvedSourceType || element instanceof ResolvedBinaryType){
- ICompilationUnit cUnit = (ICompilationUnit)input;
- element = cUnit.getElementAt(wordRegion.getOffset());
- if(element == null)
- continue;
-
- if(element instanceof IMethod){
- position = offset;
- }
- }
- Set<IObserverMethod> observerMethods = findEvents(cdiNature, element, position,
file);
- if(observerMethods.size() > 0)
- hyperlinks.add(new EventListHyperlink(textViewer, region, observerMethods,
document));
- }
-
- if (hyperlinks != null && !hyperlinks.isEmpty()) {
- return (IHyperlink[])hyperlinks.toArray(new IHyperlink[hyperlinks.size()]);
- }
- } catch (JavaModelException jme) {
- CDIExtensionsPlugin.log(jme);
- }
- return null;
- }
-
- private Set<IObserverMethod> findEvents(CDICoreNature nature, IJavaElement
element, int offset, IFile file){
- ICDIProject cdiProject = nature.getDelegate();
-
- if(cdiProject == null){
- return (Set<IObserverMethod>)Collections.EMPTY_SET;
- }
-
- Set<IBean> beans = cdiProject.getBeans(file.getFullPath());
-
- IInjectionPoint injectionPoint = CDIUtil.findInjectionPoint(beans, element, offset);
- if(injectionPoint == null){
- return (Set<IObserverMethod>)Collections.EMPTY_SET;
- }
-
- Set<IObserverMethod> resultObserverSet =
cdiProject.resolveObserverMethods(injectionPoint);
-
- return resultObserverSet;
- }
-}
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.text.ext/src/org/jboss/tools/cdi/text/ext/hyperlink/EventListHyperlink.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.text.ext/src/org/jboss/tools/cdi/text/ext/hyperlink/EventListHyperlink.java 2010-07-26
16:10:39 UTC (rev 23728)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.text.ext/src/org/jboss/tools/cdi/text/ext/hyperlink/EventListHyperlink.java 2010-07-26
16:20:28 UTC (rev 23729)
@@ -21,21 +21,22 @@
import org.eclipse.ui.IPartListener;
import org.eclipse.ui.IWorkbenchPart;
import org.eclipse.ui.PlatformUI;
+import org.jboss.tools.cdi.core.IInjectionPoint;
import org.jboss.tools.cdi.core.IObserverMethod;
import org.jboss.tools.cdi.text.ext.CDIExtensionsMessages;
import org.jboss.tools.common.text.ext.hyperlink.AbstractHyperlink;
public class EventListHyperlink extends AbstractHyperlink{
private ITextViewer viewer;
- private Set<IObserverMethod> observerMethods;
+ private Set<IInjectionPoint> events;
private IRegion region;
private static MultipleHyperlinkPresenter mhp = new MultipleHyperlinkPresenter(new
RGB(0, 0, 255));
private static boolean installed = false;
- public EventListHyperlink(ITextViewer viewer, IRegion region, Set<IObserverMethod>
observerMethods, IDocument document){
+ public EventListHyperlink(ITextViewer viewer, IRegion region, Set<IInjectionPoint>
events, IDocument document){
this.viewer = viewer;
- this.observerMethods = observerMethods;
+ this.events = events;
this.region = region;
setDocument(document);
}
@@ -47,11 +48,11 @@
}
protected void doHyperlink(IRegion region) {
- IHyperlink[] hyperlinks = new IHyperlink[observerMethods.size()];
+ IHyperlink[] hyperlinks = new IHyperlink[events.size()];
int index=0;
- for(IObserverMethod observerMethod : observerMethods){
- hyperlinks[index++] = new EventHyperlink(region, observerMethod, getDocument());
+ for(IInjectionPoint event : events){
+ hyperlinks[index++] = new EventHyperlink(region, event, getDocument());
}
if(hyperlinks.length == 0){
@@ -97,7 +98,7 @@
@Override
public String getHyperlinkText() {
- return CDIExtensionsMessages.CDI_EVENT_LIST_HYPERLINK_OPEN_OBSERVER_METHODS;
+ return CDIExtensionsMessages.CDI_EVENT_LIST_HYPERLINK_OPEN_EVENTS;
}
}
Copied:
trunk/cdi/plugins/org.jboss.tools.cdi.text.ext/src/org/jboss/tools/cdi/text/ext/hyperlink/ObserverMethodHyperlink.java
(from rev 23720,
trunk/cdi/plugins/org.jboss.tools.cdi.text.ext/src/org/jboss/tools/cdi/text/ext/hyperlink/EventHyperlink.java)
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.text.ext/src/org/jboss/tools/cdi/text/ext/hyperlink/ObserverMethodHyperlink.java
(rev 0)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.text.ext/src/org/jboss/tools/cdi/text/ext/hyperlink/ObserverMethodHyperlink.java 2010-07-26
16:20:28 UTC (rev 23729)
@@ -0,0 +1,67 @@
+/*******************************************************************************
+ * Copyright (c) 2010 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:
+ * Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.jboss.tools.cdi.text.ext.hyperlink;
+
+import org.eclipse.jdt.core.IJavaElement;
+import org.eclipse.jdt.core.JavaModelException;
+import org.eclipse.jdt.ui.JavaUI;
+import org.eclipse.jface.text.IDocument;
+import org.eclipse.jface.text.IRegion;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.PartInitException;
+import org.jboss.tools.cdi.core.IObserverMethod;
+import org.jboss.tools.cdi.text.ext.CDIExtensionsMessages;
+import org.jboss.tools.cdi.text.ext.CDIExtensionsPlugin;
+import org.jboss.tools.common.text.ext.hyperlink.AbstractHyperlink;
+
+public class ObserverMethodHyperlink extends AbstractHyperlink{
+ IObserverMethod observerMethod;
+ IRegion region;
+
+ public ObserverMethodHyperlink(IRegion region, IObserverMethod observerMethod, IDocument
document){
+ this.observerMethod = observerMethod;
+ this.region = region;
+ setDocument(document);
+ }
+
+
+ @Override
+ protected IRegion doGetHyperlinkRegion(int offset) {
+ return region;
+ }
+
+ protected void doHyperlink(IRegion region) {
+ IEditorPart part = null;
+
+ if(observerMethod != null && observerMethod.getClassBean() != null){
+ try{
+ part = JavaUI.openInEditor(observerMethod.getClassBean().getBeanClass());
+ }catch(JavaModelException ex){
+ CDIExtensionsPlugin.log(ex);
+ }catch(PartInitException ex){
+ CDIExtensionsPlugin.log(ex);
+ }
+
+ IJavaElement element = observerMethod.getMethod();
+ if (part != null) {
+ JavaUI.revealInEditor(part, element);
+ }
+ }
+ if (part == null)
+ openFileFailed();
+ }
+
+ @Override
+ public String getHyperlinkText() {
+ return CDIExtensionsMessages.CDI_EVENT_HYPERLINK_OPEN_OBSERVER_METHOD+"
"+observerMethod.getMethod().getElementName();
+ }
+
+}
Property changes on:
trunk/cdi/plugins/org.jboss.tools.cdi.text.ext/src/org/jboss/tools/cdi/text/ext/hyperlink/ObserverMethodHyperlink.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Copied:
trunk/cdi/plugins/org.jboss.tools.cdi.text.ext/src/org/jboss/tools/cdi/text/ext/hyperlink/ObserverMethodListHyperlink.java
(from rev 23720,
trunk/cdi/plugins/org.jboss.tools.cdi.text.ext/src/org/jboss/tools/cdi/text/ext/hyperlink/EventListHyperlink.java)
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.text.ext/src/org/jboss/tools/cdi/text/ext/hyperlink/ObserverMethodListHyperlink.java
(rev 0)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.text.ext/src/org/jboss/tools/cdi/text/ext/hyperlink/ObserverMethodListHyperlink.java 2010-07-26
16:20:28 UTC (rev 23729)
@@ -0,0 +1,103 @@
+/*******************************************************************************
+ * Copyright (c) 2010 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:
+ * Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.jboss.tools.cdi.text.ext.hyperlink;
+
+import java.util.Set;
+
+import org.eclipse.jface.text.IDocument;
+import org.eclipse.jface.text.IRegion;
+import org.eclipse.jface.text.ITextViewer;
+import org.eclipse.jface.text.hyperlink.IHyperlink;
+import org.eclipse.jface.text.hyperlink.MultipleHyperlinkPresenter;
+import org.eclipse.swt.graphics.RGB;
+import org.eclipse.ui.IPartListener;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.PlatformUI;
+import org.jboss.tools.cdi.core.IObserverMethod;
+import org.jboss.tools.cdi.text.ext.CDIExtensionsMessages;
+import org.jboss.tools.common.text.ext.hyperlink.AbstractHyperlink;
+
+public class ObserverMethodListHyperlink extends AbstractHyperlink{
+ private ITextViewer viewer;
+ private Set<IObserverMethod> observerMethods;
+ private IRegion region;
+
+ private static MultipleHyperlinkPresenter mhp = new MultipleHyperlinkPresenter(new
RGB(0, 0, 255));
+ private static boolean installed = false;
+
+ public ObserverMethodListHyperlink(ITextViewer viewer, IRegion region,
Set<IObserverMethod> observerMethods, IDocument document){
+ this.viewer = viewer;
+ this.observerMethods = observerMethods;
+ this.region = region;
+ setDocument(document);
+ }
+
+
+ @Override
+ protected IRegion doGetHyperlinkRegion(int offset) {
+ return region;
+ }
+
+ protected void doHyperlink(IRegion region) {
+ IHyperlink[] hyperlinks = new IHyperlink[observerMethods.size()];
+
+ int index=0;
+ for(IObserverMethod observerMethod : observerMethods){
+ hyperlinks[index++] = new ObserverMethodHyperlink(region, observerMethod,
getDocument());
+ }
+
+ if(hyperlinks.length == 0){
+ openFileFailed();
+ return;
+ }
+
+ if(installed){
+ installed = false;
+ mhp.uninstall();
+ }
+
+ if(hyperlinks.length == 1){
+ ((ObserverMethodHyperlink)hyperlinks[0]).doHyperlink(region);
+ }else{
+ installed = true;
+
+ mhp.install(viewer);
+ mhp.showHyperlinks(hyperlinks);
+ PlatformUI.getWorkbench().getActiveWorkbenchWindow().getPartService().addPartListener(new
IPartListener(){
+ public void partActivated(IWorkbenchPart arg0) {
+ }
+
+ public void partBroughtToTop(IWorkbenchPart arg0) {
+ }
+
+ public void partClosed(IWorkbenchPart arg0) {
+ if(installed){
+ installed = false;
+ mhp.uninstall();
+ }
+ }
+
+ public void partDeactivated(IWorkbenchPart arg0) {
+
+ }
+
+ public void partOpened(IWorkbenchPart arg0) {
+ }
+ });
+ }
+ }
+
+ @Override
+ public String getHyperlinkText() {
+ return CDIExtensionsMessages.CDI_EVENT_LIST_HYPERLINK_OPEN_OBSERVER_METHODS;
+ }
+
+}
Property changes on:
trunk/cdi/plugins/org.jboss.tools.cdi.text.ext/src/org/jboss/tools/cdi/text/ext/hyperlink/ObserverMethodListHyperlink.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.text.ext/src/org/jboss/tools/cdi/text/ext/messages.properties
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.text.ext/src/org/jboss/tools/cdi/text/ext/messages.properties 2010-07-26
16:10:39 UTC (rev 23728)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.text.ext/src/org/jboss/tools/cdi/text/ext/messages.properties 2010-07-26
16:20:28 UTC (rev 23729)
@@ -6,4 +6,6 @@
CDI_PRODUCER_DISPOSER_HYPERLINK_OPEN_BOUND_DISPOSER=Open Bound Disposer Method
CDI_PRODUCER_DISPOSER_HYPERLINK_OPEN_BOUND_PRODUCER=Open Bound Producer Method
CDI_EVENT_LIST_HYPERLINK_OPEN_OBSERVER_METHODS=Open CDI Observer Methods
+CDI_EVENT_LIST_HYPERLINK_OPEN_EVENTS=Open CDI Events
CDI_EVENT_HYPERLINK_OPEN_OBSERVER_METHOD=Open CDI Observer Method
+CDI_EVENT_HYPERLINK_OPEN_EVENT=Open CDI Event