Skip to content

Commit

Permalink
Use rect packing for better overview sorting and layout.
Browse files Browse the repository at this point in the history
Refers #3
  • Loading branch information
NiklasRentzCAU committed Jan 29, 2020
1 parent 53b8b3b commit 23c42ee
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 8 deletions.
1 change: 1 addition & 0 deletions plugins/de.cau.cs.kieler.osgiviz/META-INF/MANIFEST.MF
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ Require-Bundle: de.cau.cs.kieler.klighd,
de.cau.cs.kieler.osgiviz.model,
de.cau.cs.kieler.klighd.krendering.extensions,
org.eclipse.elk.core;bundle-version="0.5.0",
org.eclipse.elk.alg.packing.rectangles;bundle-version="0.7.0",
org.eclipse.xtext.xbase.lib;bundle-version="2.16.0",
com.google.inject;bundle-version="3.0.0",
org.eclipse.elk.alg.layered;bundle-version="0.6.0",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,8 +44,6 @@ import java.util.LinkedHashSet
import org.eclipse.elk.alg.layered.options.CrossingMinimizationStrategy
import org.eclipse.elk.alg.layered.options.LayeredMetaDataProvider
import org.eclipse.elk.alg.layered.options.LayeredOptions
import org.eclipse.elk.core.options.BoxLayouterOptions
import org.eclipse.elk.core.util.BoxLayoutProvider.PackingMode

import static de.cau.cs.kieler.osgiviz.OsgiOptions.*

Expand Down Expand Up @@ -148,8 +146,7 @@ class OsgiDiagramSynthesis extends AbstractDiagramSynthesis<OsgiProject> {
modelNode.children += createNode => [
associateWith(model)
data += createKIdentifier => [ it.id = visContext.hashCode.toString ]
SynthesisUtils.configureBoxLayout(it)
setLayoutOption(BoxLayouterOptions.BOX_PACKING_MODE, PackingMode.GROUP_MIXED)
SynthesisUtils.configureRectPackingLayout(it)
addProjectRendering

val overviewProductNodes = productOverviewSynthesis.transform(visContext.productOverviewContext)
Expand All @@ -158,6 +155,10 @@ class OsgiDiagramSynthesis extends AbstractDiagramSynthesis<OsgiProject> {
val overviewFeatureNodes = featureOverviewSynthesis.transform(visContext.featureOverviewContext)
children += overviewFeatureNodes

val overviewBundleCategoryNodes = bundleCategoryOverviewSynthesis.transform(
visContext.bundleCategoryOverviewContext)
children += overviewBundleCategoryNodes

val overviewBundleNodes = bundleOverviewSynthesis.transform(visContext.bundleOverviewContext)
children += overviewBundleNodes

Expand All @@ -167,10 +168,6 @@ class OsgiDiagramSynthesis extends AbstractDiagramSynthesis<OsgiProject> {
// val overviewImportedPackagesNodes = packageObjectOverviewSynthesis.transform(
// visContext.importedPackageOverviewContext)
// children += overviewImportedPackagesNodes

val overviewBundleCategoryNodes = bundleCategoryOverviewSynthesis.transform(
visContext.bundleCategoryOverviewContext)
children += overviewBundleCategoryNodes
]

return modelNode
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ import de.scheidtbachmann.osgimodel.Product
import de.scheidtbachmann.osgimodel.ServiceComponent
import de.scheidtbachmann.osgimodel.ServiceInterface
import java.util.List
import org.eclipse.elk.alg.packing.rectangles.options.RectPackingOptions
import org.eclipse.elk.core.options.CoreOptions
import org.eclipse.elk.core.options.Direction
import org.eclipse.elk.core.options.EdgeRouting
Expand Down Expand Up @@ -241,6 +242,15 @@ final class SynthesisUtils {
]
}

/**
* Configures the layout of any overview node. Configures the rect packing layout algorithm of elk.
*/
def static void configureRectPackingLayout(KNode node) {
node => [
DiagramSyntheses.setLayoutOption(node, CoreOptions::ALGORITHM, RectPackingOptions::ALGORITHM_ID)
]
}

/**
* Configures the layout on a overview for the top level node that shows the connection between elements within that
* overview.
Expand Down

0 comments on commit 23c42ee

Please sign in to comment.