Search in sources :

Example 1 with Sector

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

the class PaintSector method setCorrectRows.

public void setCorrectRows() {
    final Stream s = sector.getStream();
    if (s != null) {
        final Row[] rows = s.getAdded();
        if (rows != null) {
            setRows(rows);
        }
    } else {
        Sector[] sectors = getStart().getOppozite(sector);
        boolean start = true;
        if (sectors.length == 0) {
            sectors = getEnd().getOppozite(sector);
            start = false;
        }
        if (sectors.length > 0 && sectors[0].getStream() != null) {
            sector.setStream(SectorRefactor.cloneStream(sectors[0].getStream(), movingArea.dataPlugin, sector), ReplaceStreamType.CHILDREN);
            sector.loadRowAttributes(sectors[0], start);
        }
    }
}
Also used : Sector(com.ramussoft.pb.Sector) NSector(com.ramussoft.pb.data.negine.NSector) AbstractSector(com.ramussoft.pb.data.AbstractSector) ByteArrayOutputStream(java.io.ByteArrayOutputStream) ByteArrayInputStream(java.io.ByteArrayInputStream) Stream(com.ramussoft.pb.Stream) InputStream(java.io.InputStream) Row(com.ramussoft.pb.Row)

Example 2 with Sector

use of com.ramussoft.pb.Sector 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 3 with Sector

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

the class SectorRefactor method fixNoNameBug.

private void fixNoNameBug(Crosspoint crosspoint, Sector sector) {
    if (crosspoint != null) {
        if (crosspoint.isDLevel()) {
            Sector[] oppozite = crosspoint.getOppozite(sector);
            if (oppozite.length == 1) {
                Sector opp = oppozite[0];
                Stream s = opp.getStream();
                ((NSector) sector).setThisStream(s);
            }
        }
    }
}
Also used : NSector(com.ramussoft.pb.data.negine.NSector) 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)

Example 4 with Sector

use of com.ramussoft.pb.Sector 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 Sector

use of com.ramussoft.pb.Sector 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

Sector (com.ramussoft.pb.Sector)50 NSector (com.ramussoft.pb.data.negine.NSector)40 Crosspoint (com.ramussoft.pb.Crosspoint)29 Function (com.ramussoft.pb.Function)25 NFunction (com.ramussoft.pb.data.negine.NFunction)19 Vector (java.util.Vector)19 Stream (com.ramussoft.pb.Stream)18 Row (com.ramussoft.pb.Row)15 FloatPoint (com.dsoft.pb.types.FloatPoint)10 PaintSector (com.ramussoft.pb.idef.elements.PaintSector)10 ByteArrayInputStream (java.io.ByteArrayInputStream)9 ByteArrayOutputStream (java.io.ByteArrayOutputStream)9 AbstractSector (com.ramussoft.pb.data.AbstractSector)7 ArrayList (java.util.ArrayList)5 HashSet (java.util.HashSet)5 NStream (com.ramussoft.pb.data.negine.NStream)4 Point (com.ramussoft.pb.idef.elements.Point)4 DataLoader (com.dsoft.utils.DataLoader)3 NCrosspoint (com.ramussoft.pb.data.negine.NCrosspoint)3 DFDFunction (com.ramussoft.pb.dfd.visual.DFDFunction)3