move settings into style provider

This commit is contained in:
2020-11-28 19:41:00 +01:00
parent 7c27bcec47
commit bedf4c5c4d
21 changed files with 377 additions and 263 deletions

View File

@@ -12,10 +12,9 @@ package com.minres.scviewer.database.internal;
import java.io.File;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
@@ -34,8 +33,6 @@ public class WaveformDb extends HierNode implements IWaveformDb {
private boolean loaded;
private List<IHierNode> childNodes;
private List<RelationType> relationTypes;
private Map<String, IWaveform> waveforms;
@@ -93,7 +90,7 @@ public class WaveformDb extends HierNode implements IWaveformDb {
buildHierarchyNodes() ;
relationTypes.addAll(loader.getAllRelationTypes());
pcs.firePropertyChange("WAVEFORMS", null, waveforms);
pcs.firePropertyChange("CHILDS", null, childNodes);
pcs.firePropertyChange("CHILDS", null, childs);
loaded = true;
return true;
}
@@ -116,7 +113,7 @@ public class WaveformDb extends HierNode implements IWaveformDb {
@Override
public void clear() {
waveforms.clear();
childNodes.clear();
childs.clear();
loaded=false;
}
@@ -125,61 +122,46 @@ public class WaveformDb extends HierNode implements IWaveformDb {
}
private void buildHierarchyNodes() throws InputFormatException{
childNodes= new ArrayList<IHierNode>();
for(IWaveform stream:getAllWaves()){
//updateMaxTime(stream);
String[] hier = stream.getName().split("\\.");
IHierNode node = this;
List<String> path=new LinkedList<String>();
path.add(name);
for(String name:hier){
IHierNode n1 = null;
for(int i=0; i<hier.length-1; ++i){
String name = hier[i];
IHierNode childNode = null;
for (IHierNode n : node.getChildNodes()) {
if (n.getName().equals(name)) {
n1=n;
childNode=n;
break;
}
}
if(name.equals(hier[hier.length-1])){ //leaf
if(n1!=null) {
if(n1 instanceof HierNode){
node.getChildNodes().remove(n1);
stream.getChildNodes().addAll(n1.getChildNodes());
Collections.sort(stream.getChildNodes());
} else {
throw new InputFormatException();
}
}
stream.setName(name);
stream.setParentName(join(path, "."));
node.getChildNodes().add(stream);
Collections.sort(node.getChildNodes());
node=stream;
} else { // intermediate
if(n1 != null) {
node=n1;
} else {
HierNode newNode = new HierNode(name, join(path, "."));
node.getChildNodes().add(newNode);
Collections.sort(node.getChildNodes());
node=newNode;
}
if(childNode != null) {
node = childNode;
break;
}
path.add(name);
HierNode newNode = new HierNode(name, node);
node.getChildNodes().add(newNode);
node=newNode;
}
node.getChildNodes().add(stream);
stream.setParent(node);
stream.setName(hier[hier.length-1]);
}
sortRecursive(this);
}
private static String join(Collection<?> col, String delim) {
StringBuilder sb = new StringBuilder();
Iterator<?> iter = col.iterator();
if (iter.hasNext())
sb.append(iter.next().toString());
while (iter.hasNext()) {
sb.append(delim);
sb.append(iter.next().toString());
}
return sb.toString();
private void sortRecursive(IHierNode node) {
Collections.sort(node.getChildNodes(), new Comparator<IHierNode>() {
@Override
public int compare(IHierNode o1, IHierNode o2) {
return o1.getName().compareTo(o2.getName()); }
});
for(IHierNode n:node.getChildNodes()) {
if(n.getChildNodes().size()>0)
sortRecursive(n);
}
}
@Override