Search in sources :

Example 1 with Crosspoint

use of com.ramussoft.pb.Crosspoint in project ramus by Vitaliy-Yakovchuk.

the class PaintSector method removeX.

private void removeX() {
    if (rec)
        return;
    rec = true;
    for (final Point element : points) element.remove();
    movingArea.getRefactor().removeSector(this);
    Crosspoint start = getStart();
    Crosspoint end = getEnd();
    sector.remove();
    synchronized (movingArea.getDataPlugin()) {
        ((NSector) sector).clearMe();
    }
    removeAther(start);
    removeAther(end);
}
Also used : NSector(com.ramussoft.pb.data.negine.NSector) FloatPoint(com.dsoft.pb.types.FloatPoint) NCrosspoint(com.ramussoft.pb.data.negine.NCrosspoint) Crosspoint(com.ramussoft.pb.Crosspoint)

Example 2 with Crosspoint

use of com.ramussoft.pb.Crosspoint in project ramus by Vitaliy-Yakovchuk.

the class PaintSector method removeAther.

/**
 * Перевіряє і видаляє під’єднані до сектора сектори.
 */
private void removeAther(final Crosspoint point) {
    // System.out.println("Remove other "+point);
    if (point != null) {
        Row[] del;
        if (getStream() == null)
            del = new Row[] {};
        else
            del = getStream().getAdded();
        if (!point.isDLevel()) {
            final boolean start = !point.isIn(sector);
            ((AbstractSector) sector).removeFromParent(del, start);
        }
        if (point.isRemoveable()) {
            PaintSector s = null;
            for (int i = 0; i < movingArea.getRefactor().getSectorsCount(); i++) {
                s = movingArea.getRefactor().getSector(i);
                if (point.isIn(s.getSector()))
                    break;
            }
            if (s == null)
                return;
            try {
                s.joinSector(movingArea.getRefactor().getOppozite(s, point)[0]);
            } catch (Exception exception) {
                exception.printStackTrace();
            }
            s.createTexts();
        }
    }
}
Also used : AbstractSector(com.ramussoft.pb.data.AbstractSector) Row(com.ramussoft.pb.Row) NCrosspoint(com.ramussoft.pb.data.negine.NCrosspoint) Crosspoint(com.ramussoft.pb.Crosspoint) FloatPoint(com.dsoft.pb.types.FloatPoint) IOException(java.io.IOException)

Example 3 with Crosspoint

use of com.ramussoft.pb.Crosspoint in project ramus by Vitaliy-Yakovchuk.

the class SectorRefactor method changeSector.

/**
 * Змінює сектор переданий методом setSector(Sector sector).
 *
 * @return <code>true</code>, якщо зміна відбулась,<br>
 * <code>false</code>, якщо зміна не відбулась.
 */
public boolean changeSector() {
    Crosspoint crosspoint;
    final PerspectivePoint point = getLastPoint();
    if (point.functionType == -1 && point.borderType == -1) {
        if (point.pin.getSector().getStart() == null || point.pin.getSector().getEnd() == null || point.pin.getSector().equals(sector))
            return false;
    }
    Sector inner = sector.getSector();
    for (PaintSector s : sectors) if (s.getSector().equals(inner)) {
        this.sector = s;
        break;
    }
    lastC = null;
    NSectorBorder sb;
    if (point.type == TYPE_START) {
        sb = sector.getSector().getStart();
        crosspoint = sector.getStart();
        pointB = new PerspectivePoint();
        pointB.x = sector.getEndPoint().getX();
        pointB.y = sector.getEndPoint().getY();
    } else {
        sb = sector.getSector().getEnd();
        crosspoint = sector.getEnd();
        pointA = new PerspectivePoint();
        pointA.x = sector.getStartPoint().getX();
        pointA.y = sector.getStartPoint().getY();
    }
    List<Sector> oldConnectedSectors = new ArrayList<Sector>();
    if (crosspoint != null) {
        for (Sector s : crosspoint.getIns()) if (s != sector.getSector())
            oldConnectedSectors.add(s);
        for (Sector s : crosspoint.getOuts()) if (s != sector.getSector())
            oldConnectedSectors.add(s);
    }
    Sector s = null;
    boolean createMiss = true;
    if (point.function != null) {
        Function oldF = sb.getFunction();
        if (oldF != null && oldF.equals(point.function)) {
            if (function.getDecompositionType() >= 0 || point.function.getType() >= Function.TYPE_EXTERNAL_REFERENCE)
                createMiss = false;
            else {
                createMiss = point.functionType != sb.getFunctionType();
            }
        }
    }
    if (createMiss)
        s = createMiss(point);
    else
        point.crosspoint = sb.getCrosspoint();
    if (s != null)
        s.setVisualAttributes(sector.getSector().getVisualAttributes());
    if (type == TYPE_START) {
        copyToSectorBorder(sb, pointA);
        sector.setStart(point.crosspoint, point.point, createMiss);
        sector.getSector().getStart().commit();
    } else {
        copyToSectorBorder(sector.getSector().getEnd(), pointB);
        sector.setEnd(point.crosspoint, point.point, createMiss);
        sector.getSector().getEnd().commit();
    }
    if (sector.getStream() != null) {
        if (lastC != null)
            lastC.setStream(cloneStream(sector.getStream(), movingArea.dataPlugin, lastC), ReplaceStreamType.CHILDREN);
    }
    sector.setCorrectRows();
    sector.regeneratePoints();
    sector.tryRemovePin(movingArea);
    Hashtable<Long, Sector> sectorHash = movingArea.getDataPlugin().getSectorHash();
    for (Sector sector : oldConnectedSectors) {
        if (sectorHash.get(((NSector) sector).getElementId()) != null) {
            fixOwners(sector, getDataPlugin());
        }
    }
    saveToFunction();
    return true;
}
Also used : Function(com.ramussoft.pb.Function) NFunction(com.ramussoft.pb.data.negine.NFunction) NSectorBorder(com.ramussoft.pb.data.negine.NSectorBorder) NSector(com.ramussoft.pb.data.negine.NSector) Sector(com.ramussoft.pb.Sector) NSector(com.ramussoft.pb.data.negine.NSector) ArrayList(java.util.ArrayList) Crosspoint(com.ramussoft.pb.Crosspoint)

Example 4 with Crosspoint

use of com.ramussoft.pb.Crosspoint in project ramus by Vitaliy-Yakovchuk.

the class SectorRefactor method fillStartFromOwners.

private static void fillStartFromOwners(Sector sector, HashSet<Row> owners, DataPlugin dataPlugin, boolean[] hasFunctionOwners) {
    Crosspoint crosspoint = sector.getStart().getCrosspoint();
    Function function2 = sector.getStart().getFunction();
    if (function2 != null) {
        if (function2.getType() != Function.TYPE_DFDS_ROLE) {
            Row row = function2.getOwner();
            if (row != null && !owners.contains(row)) {
                owners.add(row);
                hasFunctionOwners[0] = true;
            }
        } else {
            Stream stream = (Stream) dataPlugin.findRowByGlobalId(function2.getLink());
            if (stream != null)
                for (Row row : stream.getAdded()) {
                    if (row != null && !owners.contains(row))
                        owners.add(row);
                }
        }
    }
    if (crosspoint != null)
        for (Sector sector2 : crosspoint.getOppozite(sector)) fillStartFromOwners(sector2, owners, dataPlugin, hasFunctionOwners);
}
Also used : Function(com.ramussoft.pb.Function) NFunction(com.ramussoft.pb.data.negine.NFunction) Sector(com.ramussoft.pb.Sector) NSector(com.ramussoft.pb.data.negine.NSector) ByteArrayOutputStream(java.io.ByteArrayOutputStream) ByteArrayInputStream(java.io.ByteArrayInputStream) Stream(com.ramussoft.pb.Stream) Row(com.ramussoft.pb.Row) Crosspoint(com.ramussoft.pb.Crosspoint)

Example 5 with Crosspoint

use of com.ramussoft.pb.Crosspoint in project ramus by Vitaliy-Yakovchuk.

the class SectorRefactor method createSectorOnIn.

public Sector createSectorOnIn(final Crosspoint point, final SectorBorder border, final PaintSector sector, boolean start) {
    Function function = border.getFunction();
    int borderType = border.getBorderType();
    if (function != null && function.getType() == Function.TYPE_DFDS_ROLE) {
        function = null;
        borderType = MovingText.getOpposite(border.getFunctionType());
    }
    double pos;
    Sector s;
    Point bPoint;
    Function par = sector.getFunction();
    if (start)
        bPoint = sector.getStartPoint();
    else
        bPoint = sector.getEndPoint();
    if (function != null) {
        if ((border.getFunctionType() == MovingPanel.RIGHT) || (border.getFunctionType() == MovingPanel.LEFT))
            pos = bPoint.getY() / movingArea.CLIENT_HEIGHT * par.getBounds().getHeight() + par.getBounds().getY();
        else
            pos = bPoint.getX() / movingArea.CLIENT_WIDTH * par.getBounds().getWidth() + par.getBounds().getX();
        s = createPartIn(point, function, border.getFunctionType(), pos, !start);
    } else {
        if ((borderType == MovingPanel.RIGHT) || (borderType == MovingPanel.LEFT))
            pos = bPoint.getY() / movingArea.CLIENT_HEIGHT * par.getBounds().getHeight() + par.getBounds().getY();
        else
            pos = sector.getStartPoint().getX() / movingArea.CLIENT_WIDTH * par.getBounds().getWidth() + par.getBounds().getX();
        s = createPartOut(point, this.function, borderType, pos, !start);
    }
    if (s != null) {
        s.setStream(cloneStream(sector.getSector().getStream(), movingArea.dataPlugin, s), ReplaceStreamType.CHILDREN);
        ((NSector) s).storeData();
        s.setVisualAttributes(s.getVisualAttributes());
    }
    return s;
}
Also used : Function(com.ramussoft.pb.Function) NFunction(com.ramussoft.pb.data.negine.NFunction) NSector(com.ramussoft.pb.data.negine.NSector) Sector(com.ramussoft.pb.Sector) NSector(com.ramussoft.pb.data.negine.NSector) FloatPoint(com.dsoft.pb.types.FloatPoint) Crosspoint(com.ramussoft.pb.Crosspoint) FloatPoint(com.dsoft.pb.types.FloatPoint)

Aggregations

Crosspoint (com.ramussoft.pb.Crosspoint)29 NSector (com.ramussoft.pb.data.negine.NSector)18 Sector (com.ramussoft.pb.Sector)16 FloatPoint (com.dsoft.pb.types.FloatPoint)15 Function (com.ramussoft.pb.Function)12 NFunction (com.ramussoft.pb.data.negine.NFunction)11 NCrosspoint (com.ramussoft.pb.data.negine.NCrosspoint)9 Row (com.ramussoft.pb.Row)6 Vector (java.util.Vector)6 AbstractSector (com.ramussoft.pb.data.AbstractSector)5 PaintSector (com.ramussoft.pb.idef.elements.PaintSector)5 Stream (com.ramussoft.pb.Stream)4 Point (com.ramussoft.pb.idef.elements.Point)4 DFDFunction (com.ramussoft.pb.dfd.visual.DFDFunction)3 ByteArrayInputStream (java.io.ByteArrayInputStream)3 ByteArrayOutputStream (java.io.ByteArrayOutputStream)3 ArrayList (java.util.ArrayList)3 DFDSFunction (com.ramussoft.pb.dfds.visual.DFDSFunction)2 Ordinate (com.ramussoft.pb.idef.elements.Ordinate)2 SectorRefactor (com.ramussoft.pb.idef.elements.SectorRefactor)2