Changeset 287:e240051fbb0c in finroc_tools_finstruct-java


Ignore:
Timestamp:
21.03.2020 08:29:19 (12 months ago)
Author:
Max Reichardt <mreichardt@…>
Branch:
default
Phase:
public
Message:

Makes Finstruct only expand the connection panel to the primary connections between port composite interfaces when clicking on an edge in the graph view (for clearness/convenience)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • views/StandardViewGraphViz.java

    r275 r287  
    7171import org.finroc.core.parameter.StaticParameterList; 
    7272import org.finroc.core.port.ThreadLocalCache; 
     73import org.finroc.core.remote.ModelNode; 
     74import org.finroc.core.remote.RemoteConnectOptions; 
     75import org.finroc.core.remote.RemoteConnector; 
    7376import org.finroc.core.remote.RemoteEditableInterfaces; 
    74 import org.finroc.core.remote.ModelNode; 
    75 import org.finroc.core.remote.RemoteConnector; 
    7677import org.finroc.core.remote.RemoteFrameworkElement; 
    7778import org.finroc.core.remote.RemotePort; 
     
    8788import org.finroc.tools.finstruct.util.MouseHandlerManager; 
    8889import org.finroc.tools.gui.util.Graphics2DWrapper; 
     90import org.finroc.tools.gui.util.gui.MAction; 
    8991import org.finroc.tools.gui.util.gui.MActionEvent; 
    9092import org.finroc.tools.gui.util.gui.MToolBar; 
    91 import org.finroc.tools.gui.util.gui.MAction; 
    9293import org.rrlib.logging.Log; 
    9394import org.rrlib.logging.LogLevel; 
     
    900901            expand.add(frameworkElement); 
    901902            for (int i = 0; i < frameworkElement.getChildCount(); i++) { 
    902                 ModelNode child = (ModelNode)frameworkElement.getChildAt(i); 
     903                ModelNode child = frameworkElement.getChildAt(i); 
    903904                if ((child instanceof RemoteFrameworkElement) && isInterface((RemoteFrameworkElement)child)) { 
    904905                    expand.add(child); 
     
    11431144        } 
    11441145 
     1146        class PortCompositeInterfaceConnector { 
     1147            RemotePort source, destination; 
     1148        } 
     1149 
    11451150        @Override 
    11461151        public void mouseReleased(MouseEvent event, MouseHandler over) { 
     
    11561161            if (getSource().getModelElement() != null && getDestination().getModelElement() != null) { 
    11571162                ArrayList<RemotePort> remotePorts = getSource().getModelElement().getPortsBelow(null); 
     1163                ArrayList<PortCompositeInterfaceConnector> portCompositeInterfaceConnector = new ArrayList<>(); 
    11581164                for (RemotePort remotePort : remotePorts) { 
    11591165                    boolean added = false; 
     
    11681174                        for (RemotePort remoteDestPort : RemotePort.get(partner.getPort())) { 
    11691175                            if (remoteDestPort.isNodeAncestor(getDestination().getModelElement())) { 
     1176 
     1177                                // Collect port composite interface connectors 
     1178                                if (remotePort.isInterface() && remoteDestPort.isInterface()) { 
     1179                                    PortCompositeInterfaceConnector interfaceConnector = new PortCompositeInterfaceConnector(); 
     1180                                    interfaceConnector.source = remotePort; 
     1181                                    interfaceConnector.destination = remoteDestPort; 
     1182                                    portCompositeInterfaceConnector.add(interfaceConnector); 
     1183                                } 
     1184 
     1185                                // Do not add connectors created by port composite interface connecting 
     1186                                boolean parentPortCompositesConnected = false; 
     1187                                if (remotePort.getParent() instanceof RemotePort && remoteDestPort.getParent() instanceof RemotePort && (connector.getRemoteConnectOptions().flags & RemoteConnectOptions.FINSTRUCTED) == 0) { 
     1188                                    for (PortCompositeInterfaceConnector interfaceConnector : portCompositeInterfaceConnector) { 
     1189                                        if ((interfaceConnector.source == remotePort.getParent() || interfaceConnector.destination == remotePort.getParent()) && (interfaceConnector.source == remoteDestPort.getParent() || interfaceConnector.destination == remoteDestPort.getParent())) { 
     1190                                            parentPortCompositesConnected = true; 
     1191                                            break; 
     1192                                        } 
     1193                                    } 
     1194                                } 
     1195 
     1196                                if (parentPortCompositesConnected) { 
     1197                                    continue; 
     1198                                } 
     1199 
    11701200                                destPorts.add(remoteDestPort); 
    11711201                                if (!added) { 
     
    11791209            } 
    11801210 
     1211            // Parents of srcPorts and destinationPorts only 
     1212            ArrayList<ModelNode> srcPortParents = new ArrayList<>(); 
     1213            ArrayList<ModelNode> destPortParents = new ArrayList<>(); 
     1214            for (ModelNode node : srcPorts) { 
     1215                if (!srcPortParents.contains(node.getParent())) { 
     1216                    srcPortParents.add(node.getParent()); 
     1217                } 
     1218            } 
     1219            for (ModelNode node : destPorts) { 
     1220                if (!destPortParents.contains(node.getParent())) { 
     1221                    destPortParents.add(node.getParent()); 
     1222                } 
     1223            } 
     1224 
    11811225            if (connectionPanel != null) { 
    1182                 connectionPanel.expandOnly(true, srcPorts); 
    1183                 connectionPanel.expandOnly(false, destPorts); 
     1226                connectionPanel.expandOnly(true, srcPortParents); 
     1227                connectionPanel.expandOnly(false, destPortParents); 
    11841228            } 
    11851229        } 
Note: See TracChangeset for help on using the changeset viewer.