Hallo, wie in einem anderen Thread bereits angekündigt, ruckelt das Ziehen der Figures bei mir.
Ich hab das Drag and Drop zZ so gelöst:
Vielleicht gehe ich auch drag & drop falsch an... hilfe ist gern gesehen
Ich hab das Drag and Drop zZ so gelöst:
Java:
package gui.viewpart;
import org.eclipse.draw2d.Figure;
import org.eclipse.draw2d.FigureCanvas;
import org.eclipse.draw2d.MouseEvent;
import org.eclipse.draw2d.MouseListener;
import org.eclipse.draw2d.MouseMotionListener;
import org.eclipse.draw2d.RoundedRectangle;
import org.eclipse.draw2d.geometry.Point;
import org.eclipse.draw2d.geometry.Rectangle;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.ui.part.ViewPart;
import org.eclipse.wb.swt.SWTResourceManager;
public class D2Drag extends ViewPart {
public D2Drag() {
}
private FigureCanvas figureCanvas;
public static final String ID = "d2drag"; //$NON-NLS-1$
public Point point;
private Figure dragSource;
private Figure root;
/**
* Create contents of the view part
*
* @param parent
*/
@Override
public void createPartControl(Composite parent) {
Composite container = new Composite(parent, SWT.NONE);
container.setLayout(new FillLayout());
this.figureCanvas = new FigureCanvas(container, SWT.NONE);
figureCanvas.setBackground(SWTResourceManager
.getColor(SWT.COLOR_WIDGET_HIGHLIGHT_SHADOW));
populateCanvas();
}
/**
*
*/
private void populateCanvas() {
root = new Figure();
root.setOpaque(false);
root.setBounds(new Rectangle(0, 0, 575, 350));
Figure figure = new Figure();
figure.setBackgroundColor(Display.getCurrent().getSystemColor(
SWT.COLOR_RED));
figure.setBounds(new Rectangle(0,0,100,100));
RoundedRectangle base = new RoundedRectangle();
base.setBackgroundColor(Display.getCurrent().getSystemColor(
SWT.COLOR_TITLE_BACKGROUND_GRADIENT));
base.setBounds(new Rectangle(0, 0, 100, 100));
figure.add(base);
// Feststellen ob eine Komponente ausgewählt wird (bei mousePressed)
figure.addMouseListener(new MouseListener() {
@Override
public void mouseDoubleClicked(MouseEvent arg0) {
}
@Override
public void mousePressed(MouseEvent arg0) {
dragSource = (Figure) arg0.getSource();
}
@Override
public void mouseReleased(MouseEvent arg0) {
// nach drag die source zurücksetzen
dragSource = null;
}
});
root.add(figure);
root.addMouseMotionListener(new MouseMotionListener() {
@Override
public void mouseDragged(MouseEvent arg0) {
dragSource.setLocation(arg0.getLocation());
}
@Override
public void mouseEntered(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mouseExited(MouseEvent arg0) {
}
@Override
public void mouseHover(MouseEvent arg0) {
}
@Override
public void mouseMoved(MouseEvent arg0) {
}
});
root.addMouseMotionListener(new MouseMotionListener() {
@Override
public void mouseDragged(MouseEvent arg0) {
dragSource.setLocation(arg0.getLocation());
}
@Override
public void mouseEntered(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mouseExited(MouseEvent arg0) {
}
@Override
public void mouseHover(MouseEvent arg0) {
}
@Override
public void mouseMoved(MouseEvent arg0) {
}
});
figureCanvas.setContents(root);
}
@Override
public void setFocus() {
// TODO Auto-generated method stub
}
}
Vielleicht gehe ich auch drag & drop falsch an... hilfe ist gern gesehen