Package research.align

Source Code of research.align.VertDistAction

package research.align;

import research.Figure;
import research.ConnectionFigure;
import research.DrawingEditor;

import javax.swing.*;
import java.util.ArrayList;
import java.util.Iterator;
import java.awt.event.ActionEvent;
import java.awt.*;

/**
* Created by IntelliJ IDEA.
* User: saturn
* Date: 2003-10-15
* Time: 19:01:19
* To change this template use Options | File Templates.
*/
class VertDistAction extends DistAction {

    ArrayList arrayList = new ArrayList();

    public VertDistAction() {
        this.putValue(Action.NAME, "��ֱ�ֲ�");
    }

    public void actionPerformed(ActionEvent e) {
        if (!isEnabled()) return;

        caculateAffectedArea();

        DrawingEditor drawingEditor = (DrawingEditor)getValue(ConstantDefinition.DRAWING_EDITOR);
        Iterator iterator = drawingEditor.getCurrentView().getSelection().iterator();
        int figureCount = 0;

        arrayList.clear();

        while (iterator.hasNext()) {
            Figure figure = (Figure) iterator.next();
            if (!(figure instanceof ConnectionFigure)) {
                figureCount++;

                Point center = figure.center();
                if (arrayList.isEmpty()) {
                    arrayList.add(figure);
                } else {
                    int i;
                    for (i = 0; i < arrayList.size(); i++) {
                        Figure fig = (Figure) arrayList.get(i);
                        if (center.y < fig.center().y) {
                            arrayList.add(i, figure);
                            break;
                        }
                    }

                    if (i == arrayList.size())
                        arrayList.add(figure);
                }

            }
        }

        int filled = 0;
        for (int i = 0; i < arrayList.size(); i++) {
            Figure fig = (Figure) arrayList.get(i);

            if ((i == 0) || (i == arrayList.size() - 1)) {
                filled += fig.getDisplayBox().height / 2;
            } else {
                filled += fig.getDisplayBox().height;
            }

        }

        double unit = (rect.height * 1.0 - filled) / (figureCount - 1);

        Rectangle r = ((Figure) arrayList.get(0)).getDisplayBox();
        int base = r.y + r.height;
        for (int i = 1; i < arrayList.size() - 1; i++) {
            Figure fig = (Figure) arrayList.get(i);
            fig.moveBy(0, (int) (base + unit * i - fig.getDisplayBox(r).y));
            base += r.height;
        }

        drawingEditor.getCurrentView().repairDamage();
    }
}
TOP

Related Classes of research.align.VertDistAction

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.