Package de.FeatureModellingTool.GraphicalEditor

Source Code of de.FeatureModellingTool.GraphicalEditor.FeatureModelTraceTool

package de.FeatureModellingTool.GraphicalEditor;

import research.tool.Tool;
import research.FigureEnumeration;
import research.Figure;
import de.reuse.GroupMap;
import de.FeatureModellingTool.FeatureModel.FeatureModel;

import java.beans.PropertyChangeEvent;
import java.awt.event.MouseEvent;
import java.awt.*;

/**
* Created by IntelliJ IDEA.
* User: saturn
* Date: 2003-9-8
* Time: 22:22:19
* To change this template use Options | File Templates.
*/
class FeatureModelTraceTool extends Tool implements ConstantDefinition {

    private FeatureModel featureModel = null;

    private GroupMap idToFigureMap = null;


    protected void contextChange(PropertyChangeEvent e) {
        super.contextChange(e);
        String propertyName = e.getPropertyName();
        if (FEATURE_MODEL.equals(propertyName)) {
            end();
            featureModel = (FeatureModel) e.getNewValue();
        } else if (ID_TO_FIGURE_MAP.equals(propertyName)) {
            idToFigureMap = (GroupMap) e.getNewValue();
        }
    }

     public void mouseEntered(MouseEvent e, int x, int y) {
        drawingView.setCursor(Cursor.getDefaultCursor());
    }

    public void mouseExited(MouseEvent e, int x, int y) {
        drawingView.setCursor(Cursor.getDefaultCursor());
    }

     public void mouseMove(MouseEvent evt, int x, int y) {
        double scale = drawingView.getScale();

        int realX = (int) (x / scale + 0.5);
        int realY = (int) (y / scale + 0.5);

        Figure figure = drawingView.getDrawing().findFigure(realX, realY);

        boolean flag = false;

        if (figure != null) {
            drawingView.setCursor(new Cursor(Cursor.HAND_CURSOR));
            flag = true;
        }

        if(!flag)
            drawingView.setCursor(Cursor.getDefaultCursor());

    }

    public void mouseDown(MouseEvent e, int x, int y) {
        double scale = drawingView.getScale();

        int realX = (int) (e.getX() / scale + 0.5);
        int realY = (int) (e.getY() / scale + 0.5);

        FigureEnumeration fe = drawingView.getDrawing().getFiguresReverse();

        Figure figure = null;

        while (fe.hasMoreElements()) {
            figure = fe.nextFigure();
            if (!figure.containsPoint(realX, realY)) {
                figure = null;
                continue;
            }

            Boolean selectivity = (Boolean) figure.getAttribute("selectivity");

            if (selectivity.booleanValue() == false) {
                figure = null;
                continue;
            }

            break;
        }

        if(figure != null){
            drawingView.setSelection(figure);
        }else{
            drawingView.clearSelection();
        }
    }

    public void mouseClicked(MouseEvent e, int x, int y) {

        if(e.getClickCount() < 2) return;

        double scale = drawingView.getScale();

        int realX = (int) (x / scale + 0.5);
        int realY = (int) (y / scale + 0.5);

        Figure figure = drawingView.getDrawing().findFigure(realX, realY);

        if((figure != null)&&(figure instanceof FeatureFigure)){
            FeatureFigure ff = (FeatureFigure)figure;
            Boolean value = (Boolean)ff.getAttribute(FeatureFigure.IS_A_LINK);

            if((value != null)&&(value.booleanValue())){
                //trace to its origin
                System.out.println("trace to its origin");
            }
        }
    }

}
TOP

Related Classes of de.FeatureModellingTool.GraphicalEditor.FeatureModelTraceTool

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.