eclipse / elk

Eclipse Layout Kernel - Automatic layout for Java applications.
https://www.eclipse.org/elk/
Other
258 stars 86 forks source link

Combining disco and force yields invalid positions #558

Open uruuru opened 4 years ago

uruuru commented 4 years ago

For an initial description and symptoms see kieler/elkjs#74.

My first guess would be that some properties of the graph provided there yield invalid positions after layout with force. However, solely applying force does work. Hence the issue must originate from the interaction with the disco layouter.

uruuru commented 4 years ago

Cleaned up graph looks better. However, edge labels are flying around.

graph _ecore
algorithm: disco
componentCompaction.componentLayoutAlgorithm: stress
node _ecore_EAttribute {
    label __21547716973883924: "EAttribute"
    node _ecore_EAttribute_iD {
        label __6798190562029872: "iD : EBoolean"
    }
}
node _ecore_EAnnotation {
    label __8671257732868138: "EAnnotation"
    node _ecore_EAnnotation_source {
        label __30492103208881505: "source : EString"
    }
}
node _ecore_EClass {
    label __6485590109453749: "EClass"
    node _ecore_EClass_abstract {
        label __6932076341378193: "abstract : EBoolean"
    }
    node _ecore_EClass_interface {
        label __7322693884557148: "interface : EBoolean"
    }
}
node _ecore_EClassifier {
    label __7681295555150002: "EClassifier"
    node _ecore_EClassifier_instanceClassName {
        label __8039135100244336: "instanceClassName : EString"
    }
    node _ecore_EClassifier_instanceClass {
        label __7762436969075369: "instanceClass : EJavaClass"
    }
    node _ecore_EClassifier_defaultValue {
        label __26472068828712836: "defaultValue : EJavaObject"
    }
    node _ecore_EClassifier_instanceTypeName {
        label __32373832438714867: "instanceTypeName : EString"
    }
}
node _ecore_EDataType {
    label __9979685532828337: "EDataType"
    node _ecore_EDataType_serializable {
        label __06596482978535345: "serializable : EBoolean"
    }
}
node _ecore_EEnum {
    layout [ size: 30, 30 ]
    label __08313307938378867: "EEnum"
}
node _ecore_EEnumLiteral {
    label __2881001725830754: "EEnumLiteral"
    node _ecore_EEnumLiteral_value {
        label __3776965440221408: "value : EInt"
    }
    node _ecore_EEnumLiteral_instance {
        label __68622020618952: "instance : EEnumerator"
    }
    node _ecore_EEnumLiteral_literal {
        label __5618192883593538: "literal : EString"
    }
}
node _ecore_EFactory {
    layout [ size: 30, 30 ]
    label __46183537290860754: "EFactory"
}
node _ecore_EModelElement {
    layout [ size: 30, 30 ]
    label __9664376348470897: "EModelElement"
}
node _ecore_ENamedElement {
    label __6239555086199025: "ENamedElement"
    node _ecore_ENamedElement_name {
        label __2502335074755946: "name : EString"
    }
}
node _ecore_EObject {
    layout [ size: 30, 30 ]
    label __960348726350846: "EObject"
}
node _ecore_EOperation {
    layout [ size: 30, 30 ]
    label __004616618737504075: "EOperation"
}
node _ecore_EPackage {
    label __5220216310800595: "EPackage"
    node _ecore_EPackage_nsURI {
        label __5426727256956806: "nsURI : EString"
    }
    node _ecore_EPackage_nsPrefix {
        label __8789860430918958: "nsPrefix : EString"
    }
}
node _ecore_EParameter {
    layout [ size: 30, 30 ]
    label __7975131747764614: "EParameter"
}
node _ecore_EReference {
    label __42753817679916417: "EReference"
    node _ecore_EReference_containment {
        label __36581863058914343: "containment : EBoolean"
    }
    node _ecore_EReference_container {
        label __9876427969162604: "container : EBoolean"
    }
    node _ecore_EReference_resolveProxies {
        label __46254055475304023: "resolveProxies : EBoolean"
    }
}
node _ecore_EStructuralFeature {
    label __4185461477724377: "EStructuralFeature"
    node _ecore_EStructuralFeature_changeable {
        label __6172236711934364: "changeable : EBoolean"
    }
    node _ecore_EStructuralFeature_volatile {
        label __8933993162076888: "volatile : EBoolean"
    }
    node _ecore_EStructuralFeature_transient {
        label __8112545667004253: "transient : EBoolean"
    }
    node _ecore_EStructuralFeature_defaultValueLiteral {
        label __6303356544207555: "defaultValueLiteral : EString"
    }
    node _ecore_EStructuralFeature_defaultValue {
        label __5135197768415417: "defaultValue : EJavaObject"
    }
    node _ecore_EStructuralFeature_unsettable {
        label __21851402871576064: "unsettable : EBoolean"
    }
    node _ecore_EStructuralFeature_derived {
        label __2801308686308046: "derived : EBoolean"
    }
}
node _ecore_ETypedElement {
    label __39434121528704813: "ETypedElement"
    node _ecore_ETypedElement_ordered {
        label __6808650811005881: "ordered : EBoolean"
    }
    node _ecore_ETypedElement_unique {
        label __16355395629858993: "unique : EBoolean"
    }
    node _ecore_ETypedElement_lowerBound {
        label __7899604545246344: "lowerBound : EInt"
    }
    node _ecore_ETypedElement_upperBound {
        label __6859228110542127: "upperBound : EInt"
    }
    node _ecore_ETypedElement_many {
        label __982297002757774: "many : EBoolean"
    }
    node _ecore_ETypedElement_required {
        label __6622059988269757: "required : EBoolean"
    }
}
node _ecore_EStringToStringMapEntry {
    label __23163729201378835: "EStringToStringMapEntry"
    node _ecore_EStringToStringMapEntry_key {
        label __9771675147854842: "key : EString"
    }
    node _ecore_EStringToStringMapEntry_value {
        label __3133248461449679: "value : EString"
    }
}
node _ecore_EGenericType {
    layout [ size: 30, 30 ]
    label __5127102482890178: "EGenericType"
}
node _ecore_ETypeParameter {
    layout [ size: 30, 30 ]
    label __39198323264438684: "ETypeParameter"
}
node _ecore_EBigDecimal {
    layout [ size: 30, 30 ]
    label __8381430551424376: "EBigDecimal"
}
node _ecore_EBigInteger {
    layout [ size: 30, 30 ]
    label __7623784405344833: "EBigInteger"
}
node _ecore_EBoolean {
    layout [ size: 30, 30 ]
    label __4590849321438679: "EBoolean"
}
node _ecore_EBooleanObject {
    layout [ size: 30, 30 ]
    label __8117964169296683: "EBooleanObject"
}
node _ecore_EByte {
    layout [ size: 30, 30 ]
    label __9533521592239362: "EByte"
}
node _ecore_EByteArray {
    layout [ size: 30, 30 ]
    label __06586214015840774: "EByteArray"
}
node _ecore_EByteObject {
    layout [ size: 30, 30 ]
    label __1873268116600949: "EByteObject"
}
node _ecore_EChar {
    layout [ size: 30, 30 ]
    label __8275088645729302: "EChar"
}
node _ecore_ECharacterObject {
    layout [ size: 30, 30 ]
    label __3299034150953182: "ECharacterObject"
}
node _ecore_EDate {
    layout [ size: 30, 30 ]
    label __05218754709765827: "EDate"
}
node _ecore_EDiagnosticChain {
    layout [ size: 30, 30 ]
    label __2795224492873084: "EDiagnosticChain"
}
node _ecore_EDouble {
    layout [ size: 30, 30 ]
    label __8469039232805868: "EDouble"
}
node _ecore_EDoubleObject {
    layout [ size: 30, 30 ]
    label __3181800378417159: "EDoubleObject"
}
node _ecore_EEList {
    layout [ size: 30, 30 ]
    label __4953257034935219: "EEList"
}
node _ecore_EEnumerator {
    layout [ size: 30, 30 ]
    label __5509677529298: "EEnumerator"
}
node _ecore_EFeatureMap {
    layout [ size: 30, 30 ]
    label __8511459036716036: "EFeatureMap"
}
node _ecore_EFeatureMapEntry {
    layout [ size: 30, 30 ]
    label __795844703818676: "EFeatureMapEntry"
}
node _ecore_EFloat {
    layout [ size: 30, 30 ]
    label __2718835085425073: "EFloat"
}
node _ecore_EFloatObject {
    layout [ size: 30, 30 ]
    label __23568790419122754: "EFloatObject"
}
node _ecore_EInt {
    layout [ size: 30, 30 ]
    label __7604570318419692: "EInt"
}
node _ecore_EIntegerObject {
    layout [ size: 30, 30 ]
    label __5807577429088989: "EIntegerObject"
}
node _ecore_EJavaClass {
    layout [ size: 30, 30 ]
    label __7855453297853967: "EJavaClass"
}
node _ecore_EJavaObject {
    layout [ size: 30, 30 ]
    label __23050230649927206: "EJavaObject"
}
node _ecore_ELong {
    layout [ size: 30, 30 ]
    label __24163337695853326: "ELong"
}
node _ecore_ELongObject {
    layout [ size: 30, 30 ]
    label __567893085565217: "ELongObject"
}
node _ecore_EMap {
    layout [ size: 30, 30 ]
    label __04376122330921939: "EMap"
}
node _ecore_EResource {
    layout [ size: 30, 30 ]
    label __9250257685671992: "EResource"
}
node _ecore_EResourceSet {
    layout [ size: 30, 30 ]
    label __6402824942066161: "EResourceSet"
}
node _ecore_EShort {
    layout [ size: 30, 30 ]
    label __28947136366773507: "EShort"
}
node _ecore_EShortObject {
    layout [ size: 30, 30 ]
    label __7259038054279634: "EShortObject"
}
node _ecore_EString {
    layout [ size: 30, 30 ]
    label __5745878870479003: "EString"
}
node _ecore_ETreeIterator {
    layout [ size: 30, 30 ]
    label __32926826464645464: "ETreeIterator"
}
node _ecore_EInvocationTargetException {
    layout [ size: 30, 30 ]
    label __184665944573571: "EInvocationTargetException"
}

edge _ecore_EAttribute_eAttributeType: _ecore_EAttribute -> _ecore_EDataType {
    label __9723393144819397: "eAttributeType" {
        edgeLabels.placement: CENTER
    }
}
edge _ecore_EAnnotation_details: _ecore_EAnnotation -> _ecore_EStringToStringMapEntry {
    label __6995668024000702: "details" {
        edgeLabels.placement: CENTER
    }
}
edge _ecore_EAnnotation_eModelElement: _ecore_EAnnotation -> _ecore_EModelElement {
    label __4122119619694491: "eModelElement" {
        edgeLabels.placement: CENTER
    }
}
edge _ecore_EAnnotation_contents: _ecore_EAnnotation -> _ecore_EObject {
    label __8805674956770662: "contents" {
        edgeLabels.placement: CENTER
    }
}
edge _ecore_EAnnotation_references: _ecore_EAnnotation -> _ecore_EObject {
    label __025281262418938133: "references" {
        edgeLabels.placement: CENTER
    }
}
edge _ecore_EClass_eSuperTypes: _ecore_EClass -> _ecore_EClass {
    label __39191327362299544: "eSuperTypes" {
        edgeLabels.placement: CENTER
    }
}
edge _ecore_EClass_eOperations: _ecore_EClass -> _ecore_EOperation {
    label __5146918621196404: "eOperations" {
        edgeLabels.placement: CENTER
    }
}
edge _ecore_EClass_eAllAttributes: _ecore_EClass -> _ecore_EAttribute {
    label __3334167321301753: "eAllAttributes" {
        edgeLabels.placement: CENTER
    }
}
edge _ecore_EClass_eAllReferences: _ecore_EClass -> _ecore_EReference {
    label __10604126571217776: "eAllReferences" {
        edgeLabels.placement: CENTER
    }
}
edge _ecore_EClass_eReferences: _ecore_EClass -> _ecore_EReference {
    label __5530367958968117: "eReferences" {
        edgeLabels.placement: CENTER
    }
}
edge _ecore_EClass_eAttributes: _ecore_EClass -> _ecore_EAttribute {
    label __8317576624534005: "eAttributes" {
        edgeLabels.placement: CENTER
    }
}
edge _ecore_EClass_eAllContainments: _ecore_EClass -> _ecore_EReference {
    label __17726140324578832: "eAllContainments" {
        edgeLabels.placement: CENTER
    }
}
edge _ecore_EClass_eAllOperations: _ecore_EClass -> _ecore_EOperation {
    label __3153973771966022: "eAllOperations" {
        edgeLabels.placement: CENTER
    }
}
edge _ecore_EClass_eAllStructuralFeatures: _ecore_EClass -> _ecore_EStructuralFeature {
    label __594765857908933: "eAllStructuralFeatures" {
        edgeLabels.placement: CENTER
    }
}
edge _ecore_EClass_eAllSuperTypes: _ecore_EClass -> _ecore_EClass {
    label __2457916134040039: "eAllSuperTypes" {
        edgeLabels.placement: CENTER
    }
}
edge _ecore_EClass_eIDAttribute: _ecore_EClass -> _ecore_EAttribute {
    label __005556246785469066: "eIDAttribute" {
        edgeLabels.placement: CENTER
    }
}
edge _ecore_EClass_eStructuralFeatures: _ecore_EClass -> _ecore_EStructuralFeature {
    label __25883497447650905: "eStructuralFeatures" {
        edgeLabels.placement: CENTER
    }
}
edge _ecore_EClass_eGenericSuperTypes: _ecore_EClass -> _ecore_EGenericType {
    label __6825069880015593: "eGenericSuperTypes" {
        edgeLabels.placement: CENTER
    }
}
edge _ecore_EClass_eAllGenericSuperTypes: _ecore_EClass -> _ecore_EGenericType {
    label __029605022745440968: "eAllGenericSuperTypes" {
        edgeLabels.placement: CENTER
    }
}
edge _ecore_EClassifier_ePackage: _ecore_EClassifier -> _ecore_EPackage {
    label __14355651432018157: "ePackage" {
        edgeLabels.placement: CENTER
    }
}
edge _ecore_EClassifier_eTypeParameters: _ecore_EClassifier -> _ecore_ETypeParameter {
    label __46810549251939015: "eTypeParameters" {
        edgeLabels.placement: CENTER
    }
}
edge _ecore_EEnum_eLiterals: _ecore_EEnum -> _ecore_EEnumLiteral {
    label __1755039969295491: "eLiterals" {
        edgeLabels.placement: CENTER
    }
}
edge _ecore_EEnumLiteral_eEnum: _ecore_EEnumLiteral -> _ecore_EEnum {
    label __679164825434156: "eEnum" {
        edgeLabels.placement: CENTER
    }
}
edge _ecore_EFactory_ePackage: _ecore_EFactory -> _ecore_EPackage {
    label __2749745415210677: "ePackage" {
        edgeLabels.placement: CENTER
    }
}
edge _ecore_EModelElement_eAnnotations: _ecore_EModelElement -> _ecore_EAnnotation {
    label __1175685236300269: "eAnnotations" {
        edgeLabels.placement: CENTER
    }
}
edge _ecore_EOperation_eContainingClass: _ecore_EOperation -> _ecore_EClass {
    label __04319964345356753: "eContainingClass" {
        edgeLabels.placement: CENTER
    }
}
edge _ecore_EOperation_eTypeParameters: _ecore_EOperation -> _ecore_ETypeParameter {
    label __0399728255652696: "eTypeParameters" {
        edgeLabels.placement: CENTER
    }
}
edge _ecore_EOperation_eParameters: _ecore_EOperation -> _ecore_EParameter {
    label __12126290538163675: "eParameters" {
        edgeLabels.placement: CENTER
    }
}
edge _ecore_EOperation_eExceptions: _ecore_EOperation -> _ecore_EClassifier {
    label __4631254186285839: "eExceptions" {
        edgeLabels.placement: CENTER
    }
}
edge _ecore_EOperation_eGenericExceptions: _ecore_EOperation -> _ecore_EGenericType {
    label __43835610411062864: "eGenericExceptions" {
        edgeLabels.placement: CENTER
    }
}
edge _ecore_EPackage_eFactoryInstance: _ecore_EPackage -> _ecore_EFactory {
    label __5812136675413776: "eFactoryInstance" {
        edgeLabels.placement: CENTER
    }
}
edge _ecore_EPackage_eClassifiers: _ecore_EPackage -> _ecore_EClassifier {
    label __3200501903859626: "eClassifiers" {
        edgeLabels.placement: CENTER
    }
}
edge _ecore_EPackage_eSubpackages: _ecore_EPackage -> _ecore_EPackage {
    label __11138112245652709: "eSubpackages" {
        edgeLabels.placement: CENTER
    }
}
edge _ecore_EPackage_eSuperPackage: _ecore_EPackage -> _ecore_EPackage {
    label __461721104113486: "eSuperPackage" {
        edgeLabels.placement: CENTER
    }
}
edge _ecore_EParameter_eOperation: _ecore_EParameter -> _ecore_EOperation {
    label __37528965461561414: "eOperation" {
        edgeLabels.placement: CENTER
    }
}
edge _ecore_EReference_eOpposite: _ecore_EReference -> _ecore_EReference {
    label __13292056944919195: "eOpposite" {
        edgeLabels.placement: CENTER
    }
}
edge _ecore_EReference_eReferenceType: _ecore_EReference -> _ecore_EClass {
    label __0742599176776978: "eReferenceType" {
        edgeLabels.placement: CENTER
    }
}
edge _ecore_EReference_eKeys: _ecore_EReference -> _ecore_EAttribute {
    label __6159707088682196: "eKeys" {
        edgeLabels.placement: CENTER
    }
}
edge _ecore_EStructuralFeature_eContainingClass: _ecore_EStructuralFeature -> _ecore_EClass {
    label __5980208965669996: "eContainingClass" {
        edgeLabels.placement: CENTER
    }
}
edge _ecore_ETypedElement_eType: _ecore_ETypedElement -> _ecore_EClassifier {
    label __18160469300838178: "eType" {
        edgeLabels.placement: CENTER
    }
}
edge _ecore_ETypedElement_eGenericType: _ecore_ETypedElement -> _ecore_EGenericType {
    label __9924577164567393: "eGenericType" {
        edgeLabels.placement: CENTER
    }
}
edge _ecore_EGenericType_eUpperBound: _ecore_EGenericType -> _ecore_EGenericType {
    label __8849285183783003: "eUpperBound" {
        edgeLabels.placement: CENTER
    }
}
edge _ecore_EGenericType_eTypeArguments: _ecore_EGenericType -> _ecore_EGenericType {
    label __8164284831998075: "eTypeArguments" {
        edgeLabels.placement: CENTER
    }
}
edge _ecore_EGenericType_eRawType: _ecore_EGenericType -> _ecore_EClassifier {
    label __36535375000315773: "eRawType" {
        edgeLabels.placement: CENTER
    }
}
edge _ecore_EGenericType_eLowerBound: _ecore_EGenericType -> _ecore_EGenericType {
    label __06444502053030254: "eLowerBound" {
        edgeLabels.placement: CENTER
    }
}
edge _ecore_EGenericType_eTypeParameter: _ecore_EGenericType -> _ecore_ETypeParameter {
    label __058745216325367555: "eTypeParameter" {
        edgeLabels.placement: CENTER
    }
}
edge _ecore_EGenericType_eClassifier: _ecore_EGenericType -> _ecore_EClassifier {
    label __9880502242961493: "eClassifier" {
        edgeLabels.placement: CENTER
    }
}
edge _ecore_ETypeParameter_eBounds: _ecore_ETypeParameter -> _ecore_EGenericType {
    label __4234597792900594: "eBounds" {
        edgeLabels.placement: CENTER
    }
}