diff --git a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/AST/TTCN3/definitions/Def_Function.java b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/AST/TTCN3/definitions/Def_Function.java index 79b576afe0677c06c66720a8ceb6ca212dce2d89..bf6bbcf8efa870dfbed103ca8259719a6a13812c 100644 --- a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/AST/TTCN3/definitions/Def_Function.java +++ b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/AST/TTCN3/definitions/Def_Function.java @@ -63,8 +63,8 @@ import org.eclipse.titan.designer.editors.ProposalCollector; import org.eclipse.titan.designer.editors.Stylers; import org.eclipse.titan.designer.editors.T3Doc; import org.eclipse.titan.designer.editors.actions.DeclarationCollector; -import org.eclipse.titan.designer.editors.controls.HoverProposal; import org.eclipse.titan.designer.editors.controls.HoverContentType; +import org.eclipse.titan.designer.editors.controls.HoverProposal; import org.eclipse.titan.designer.editors.controls.Ttcn3HoverContent; import org.eclipse.titan.designer.editors.ttcn3editor.TTCN3CodeSkeletons; import org.eclipse.titan.designer.parsers.CompilationTimeStamp; diff --git a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/editors/AnnotationHover.java b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/editors/AnnotationHover.java index f893df9e074f730185bc551700bf50e048edc60b..5acb3657f409b78781fbf9eeafcb4f8c377d2035 100644 --- a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/editors/AnnotationHover.java +++ b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/editors/AnnotationHover.java @@ -110,7 +110,7 @@ public final class AnnotationHover implements IAnnotationHover, IAnnotationHover } } } - return new MarkerHoverContent(builder.toString()); + return new MarkerHoverContent(builder.toString(), null); } @Override diff --git a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/editors/controls/HoverProposal.java b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/editors/controls/HoverProposal.java index 439c2d4b167d61fe74c2ebfd7459dc607dc5718c..fc719749abc80a0470ef60023cc2055d308607d3 100755 --- a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/editors/controls/HoverProposal.java +++ b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/editors/controls/HoverProposal.java @@ -9,9 +9,10 @@ package org.eclipse.titan.designer.editors.controls; import org.eclipse.core.resources.IMarker; import org.eclipse.jface.dialogs.MessageDialog; -import org.eclipse.ui.IMarkerResolution; +import org.eclipse.swt.graphics.Image; +import org.eclipse.ui.views.markers.WorkbenchMarkerResolution; -public class HoverProposal implements IMarkerResolution { +public class HoverProposal extends WorkbenchMarkerResolution { public static final String PROPOSAL = "proposal"; private String label; @@ -30,4 +31,22 @@ public class HoverProposal implements IMarkerResolution { MessageDialog.openInformation(null, "QuickFix Demo", "This quick-fix is not yet implemented"); } + + @Override + public String getDescription() { + // TODO Auto-generated method stub + return null; + } + + @Override + public Image getImage() { + // TODO Auto-generated method stub + return null; + } + + @Override + public IMarker[] findOtherMarkers(IMarker[] markers) { + // TODO Auto-generated method stub + return null; + } } diff --git a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/editors/controls/MarkerHoverContent.java b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/editors/controls/MarkerHoverContent.java index 1d0adf9a931c455db13b977caa85384c488bee43..297fa08cc62706e5cecb2104fff89ceb8e79bcaa 100755 --- a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/editors/controls/MarkerHoverContent.java +++ b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/editors/controls/MarkerHoverContent.java @@ -16,9 +16,11 @@ package org.eclipse.titan.designer.editors.controls; */ public class MarkerHoverContent { private String text; + private HoverProposal[] proposals; - public MarkerHoverContent(String text) { + public MarkerHoverContent(String text, HoverProposal[] proposals) { this.text = text; + this.proposals = proposals; } public String getText() { @@ -27,5 +29,21 @@ public class MarkerHoverContent { public void setText(String text) { this.text = text; - } + } + + public HoverProposal[] getProposals() { + return proposals; + } + + public HoverProposal getProposal(int index) { + return proposals[index]; + } + + public void setProposals(HoverProposal[] proposals) { + this.proposals = proposals; + } + + public int nrOfProposals() { + return proposals.length; + } } diff --git a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/editors/controls/Ttcn3HoverInfoControl.java b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/editors/controls/Ttcn3HoverInfoControl.java index be0feba85ba24d5901fb2ab1ca1d5b36985833bc..553712941026104a16e393d9cc23d69c0936611d 100755 --- a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/editors/controls/Ttcn3HoverInfoControl.java +++ b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/editors/controls/Ttcn3HoverInfoControl.java @@ -154,9 +154,7 @@ public class Ttcn3HoverInfoControl extends AbstractInformationControl implements tb.setForeground(fShell.getDisplay().getSystemColor(SWT.COLOR_LINK_FOREGROUND)); switchAction.setText(getButtonText()); - if (toolbar.getItems().length == 0) { - toolbar.add(switchAction); - } + toolbar.add(switchAction); tb.setSize(SWT.DEFAULT, 30); toolbar.update(true); toolbarTextSize = tb.getSize().x; @@ -170,7 +168,23 @@ public class Ttcn3HoverInfoControl extends AbstractInformationControl implements } if (isRich) { if (toolbar != null) { - // add proposals here + if (markerContent.nrOfProposals() > 0) { + final ToolBar tb = toolbar.createControl(fParent); + for (int i = 0; i < markerContent.nrOfProposals(); i++) { + final HoverProposal prop = markerContent.getProposal(i); + IAction propAction = new Action("", IAction.AS_PUSH_BUTTON) { + @Override + public void run() { + prop.run(null); + } + }; + propAction.setText(prop.getLabel()); + toolbar.add(propAction); + tb.setSize(SWT.DEFAULT, 30); + toolbar.update(true); + toolbarTextSize = tb.getSize().x; + } + } } } } diff --git a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/editors/ttcn3editor/TextHover.java b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/editors/ttcn3editor/TextHover.java index 3abf8333cd9d7b225c9ff3d08f554cf094d940d0..bdb5cab983a141d4ce9cf972c57d5a72694d2f4b 100644 --- a/org.eclipse.titan.designer/src/org/eclipse/titan/designer/editors/ttcn3editor/TextHover.java +++ b/org.eclipse.titan.designer/src/org/eclipse/titan/designer/editors/ttcn3editor/TextHover.java @@ -7,9 +7,12 @@ ******************************************************************************/ package org.eclipse.titan.designer.editors.ttcn3editor; +import java.util.ArrayList; import java.util.Iterator; +import java.util.List; import org.eclipse.core.resources.IFile; +import org.eclipse.core.runtime.CoreException; import org.eclipse.jface.text.IDocument; import org.eclipse.jface.text.IInformationControl; import org.eclipse.jface.text.IInformationControlCreator; @@ -31,6 +34,7 @@ import org.eclipse.titan.designer.AST.TTCN3.definitions.IHoverContent; import org.eclipse.titan.designer.editors.BaseTextHover; import org.eclipse.titan.designer.editors.IReferenceParser; import org.eclipse.titan.designer.editors.controls.HoverContentType; +import org.eclipse.titan.designer.editors.controls.HoverProposal; import org.eclipse.titan.designer.editors.controls.MarkerHoverContent; import org.eclipse.titan.designer.editors.controls.PeekSource; import org.eclipse.titan.designer.editors.controls.Ttcn3HoverContent; @@ -105,6 +109,7 @@ public final class TextHover extends BaseTextHover implements ITextHoverExtensio if (annotationModel != null) { final Iterator iterator = annotationModel.getAnnotationIterator(); StringBuilder markerInfo = new StringBuilder(); + List proposals = new ArrayList(); while (iterator.hasNext()) { final Object o = iterator.next(); if (o instanceof MarkerAnnotation) { @@ -120,10 +125,24 @@ public final class TextHover extends BaseTextHover implements ITextHoverExtensio // FIXME error handling } markerInfo.append(message); + Object attr = null; + try { + attr = actualMarker.getMarker().getAttribute(HoverProposal.PROPOSAL); + } catch (CoreException e) { + // TODO Auto-generated catch block + } + if (attr instanceof HoverProposal[]) { + HoverProposal[] propsInMarker = (HoverProposal[])attr; + for (int i = 0; i < propsInMarker.length; i++) { + proposals.add(propsInMarker[i]); + } + } } } if (markerInfo.length() > 0) { - return new MarkerHoverContent(markerInfo.toString()); + HoverProposal[] propArr = {}; + propArr = proposals.toArray(propArr); + return new MarkerHoverContent(markerInfo.toString(), propArr); } } }