1
0
mirror of https://github.com/octoleo/plantuml.git synced 2024-11-28 15:56:31 +00:00

fix: note placement in listfiles

This commit is contained in:
Arnaud Roques 2024-01-09 18:46:10 +01:00
parent 6c73caa943
commit 48dc07da95
4 changed files with 34 additions and 22 deletions

View File

@ -70,8 +70,8 @@ public abstract class USymbols {
public final static USymbol FOLDER = record("FOLDER", new USymbolFolder(SName.folder, false)); public final static USymbol FOLDER = record("FOLDER", new USymbolFolder(SName.folder, false));
public final static USymbol FILE = record("FILE", new USymbolFile()); public final static USymbol FILE = record("FILE", new USymbolFile());
public final static USymbol RECTANGLE = record("RECTANGLE", new USymbolRectangle(SName.rectangle)); public final static USymbol RECTANGLE = record("RECTANGLE", new USymbolRectangle(SName.rectangle));
public final static USymbol ACTION = record("ACTION", new USymbolAction(SName.rectangle)); public final static USymbol ACTION = record("ACTION", new USymbolAction(SName.action));
public final static USymbol PROCESS = record("PROCESS", new USymbolProcess(SName.rectangle)); public final static USymbol PROCESS = record("PROCESS", new USymbolProcess(SName.process));
public final static USymbol HEXAGON = record("HEXAGON", new USymbolHexagon()); public final static USymbol HEXAGON = record("HEXAGON", new USymbolHexagon());
public final static USymbol PERSON = record("PERSON", new USymbolPerson()); public final static USymbol PERSON = record("PERSON", new USymbolPerson());
public final static USymbol LABEL = record("LABEL", new USymbolLabel()); public final static USymbol LABEL = record("LABEL", new USymbolLabel());

View File

@ -60,47 +60,48 @@ import net.sourceforge.plantuml.svek.image.Opale;
public class FEntry implements Iterable<FEntry> { public class FEntry implements Iterable<FEntry> {
private final ISkinParam skinParam; private final FEntry parent;
private final List<String> note; private final List<String> note;
private final String name; private final String name;
private FilesType type; private FilesType type;
private List<FEntry> children = new ArrayList<>(); private List<FEntry> children = new ArrayList<>();
public static FEntry createRoot(ISkinParam skinParam) { public static FEntry createRoot() {
return new FEntry(null, "", FilesType.FOLDER, skinParam); return new FEntry(null, FilesType.FOLDER, "", null);
} }
private FEntry(List<String> note, String name, FilesType type, ISkinParam skinParam) { private FEntry(FEntry parent, FilesType type, String name, List<String> note) {
this.parent = parent;
this.note = note; this.note = note;
this.name = name; this.name = name;
this.type = type; this.type = type;
this.skinParam = skinParam;
} }
public void addRawEntry(String raw, ISkinParam skinParam) { public FEntry addRawEntry(String raw) {
final int x = raw.indexOf('/'); final int x = raw.indexOf('/');
if (x == -1) { if (x == -1) {
final FEntry result = new FEntry(null, raw, FilesType.DATA, skinParam); final FEntry result = new FEntry(this, FilesType.DATA, raw, null);
children.add(result); children.add(result);
return; return result;
} }
final FEntry folder = getOrCreateFolder(raw.substring(0, x), skinParam); final FEntry folder = getOrCreateFolder(raw.substring(0, x));
final String remain = raw.substring(x + 1); final String remain = raw.substring(x + 1);
if (remain.length() != 0) if (remain.length() != 0)
folder.addRawEntry(remain, skinParam); return folder.addRawEntry(remain);
return null;
} }
public void addNote(List<String> note, ISkinParam skinParam) { public void addNote(List<String> note) {
final FEntry result = new FEntry(note, "NONE", FilesType.NOTE, skinParam); final FEntry result = new FEntry(this, FilesType.NOTE, "NONE", note);
children.add(result); children.add(result);
} }
private FEntry getOrCreateFolder(String folderName, ISkinParam skinParam) { private FEntry getOrCreateFolder(String folderName) {
for (FEntry child : children) for (FEntry child : children)
if (child.type == FilesType.FOLDER && child.getName().equals(folderName)) if (child.type == FilesType.FOLDER && child.getName().equals(folderName))
return child; return child;
final FEntry result = new FEntry(null, folderName, FilesType.FOLDER, skinParam); final FEntry result = new FEntry(this, FilesType.FOLDER, folderName, null);
children.add(result); children.add(result);
return result; return result;
} }
@ -110,6 +111,10 @@ public class FEntry implements Iterable<FEntry> {
return Collections.unmodifiableCollection(children).iterator(); return Collections.unmodifiableCollection(children).iterator();
} }
public FEntry getParent() {
return parent;
}
public String getName() { public String getName() {
return name; return name;
} }
@ -132,14 +137,15 @@ public class FEntry implements Iterable<FEntry> {
private TextBlock getTextBlock(FontConfiguration fontConfiguration, ISkinParam skinParam) { private TextBlock getTextBlock(FontConfiguration fontConfiguration, ISkinParam skinParam) {
if (type == FilesType.NOTE) if (type == FilesType.NOTE)
return createOpale(); return createOpale(skinParam);
final Display display = Display.getWithNewlines(getEmoticon() + getName()); final Display display = Display.getWithNewlines(getEmoticon() + getName());
TextBlock result = display.create7(fontConfiguration, HorizontalAlignment.LEFT, skinParam, CreoleMode.NO_CREOLE); TextBlock result = display.create7(fontConfiguration, HorizontalAlignment.LEFT, skinParam,
CreoleMode.NO_CREOLE);
return result; return result;
} }
private Opale createOpale() { private Opale createOpale(ISkinParam skinParam) {
final StyleSignatureBasic signature = StyleSignatureBasic.of(SName.root, SName.element, SName.timingDiagram, final StyleSignatureBasic signature = StyleSignatureBasic.of(SName.root, SName.element, SName.timingDiagram,
SName.note); SName.note);

View File

@ -49,10 +49,11 @@ public class FilesListing extends AbstractTextBlock {
private final ISkinParam skinParam; private final ISkinParam skinParam;
private final FontConfiguration fontConfiguration = FontConfiguration.blackBlueTrue(UFont.courier(14)); private final FontConfiguration fontConfiguration = FontConfiguration.blackBlueTrue(UFont.courier(14));
private final FEntry root; private final FEntry root;
private FEntry lastCreated;
public FilesListing(ISkinParam skinParam) { public FilesListing(ISkinParam skinParam) {
this.skinParam = skinParam; this.skinParam = skinParam;
this.root = FEntry.createRoot(skinParam); this.root = FEntry.createRoot();
} }
@Override @Override
@ -67,11 +68,14 @@ public class FilesListing extends AbstractTextBlock {
} }
public void addRawEntry(String raw) { public void addRawEntry(String raw) {
root.addRawEntry(raw, skinParam); lastCreated = root.addRawEntry(raw);
} }
public void addNote(List<String> note) { public void addNote(List<String> note) {
root.addNote(note, skinParam); if (lastCreated == null)
root.addNote(note);
else
lastCreated.getParent().addNote(note);
} }
} }

View File

@ -36,6 +36,7 @@
package net.sourceforge.plantuml.style; package net.sourceforge.plantuml.style;
public enum SName { public enum SName {
action, //
activity, // activity, //
activityBar, // activityBar, //
activityDiagram, // activityDiagram, //
@ -113,6 +114,7 @@ public enum SName {
partition, // partition, //
person, // person, //
port, // port, //
process, //
queue, // queue, //
rectangle, // rectangle, //
reference, // reference, //