[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Newsgroup Home]
|
[news.eclipse.modeling.gmf] Re: To highlight an element on editor
|
- From: peter_l@xxxxxx (Peter Lang)
- Date: Sat, 12 Sep 2009 07:29:59 +0000 (UTC)
- Newsgroups: eclipse.modeling.gmf
- Organization: Eclipse
- User-agent: NewsPortal/0.36 (http://florian-amrhein.de/newsportal)
Hi Artur,
I guess I found a solution. By the way, there is one more thing to
consider, it's zooming. FeedbackLayer does not handle this, so I added my
solution for that too:
[CODE]
public class HighlightOnSelectionEditPolicy extends SelectionEditPolicy
implements FigureListener, ZoomListener {
RectangleFigure highlightFigure;
protected void showSelection() {
hideSelection();
highlightFigure = new RectangleFigure() {
public void paint(Graphics graphics) {
graphics.setAlpha(32);
super.paint(graphics);
}
};
updateBounds();
highlightFigure.setBackgroundColor(ColorConstants.blue);
addFeedback(highlightFigure);
getHostFigure().addFigureListener(this);
DiagramRootEditPart root = (DiagramRootEditPart) getHost().getRoot();
root.getZoomManager().addZoomListener(this);
}
protected void hideSelection() {
if (highlightFigure != null) {
getHostFigure().removeFigureListener(this);
removeFeedback(highlightFigure);
DiagramRootEditPart root = (DiagramRootEditPart) getHost()
.getRoot();
root.getZoomManager().removeZoomListener(this);
highlightFigure = null;
}
}
@Override
public void figureMoved(IFigure source) {
updateBounds();
}
@Override
public void zoomChanged(double zoom) {
updateBounds();
}
private void updateBounds() {
Rectangle bounds = getHostFigure().getBounds().getCopy();
getHostFigure().getParent().translateToAbsolute(bounds);
getFeedbackLayer().translateToRelative(bounds);
highlightFigure.setBounds(bounds);
}
}
[/CODE]