Not logged in.  Login/Logout/Register | List snippets | | Create snippet | Upload image | Upload data

188
LINES

< > BotCompany Repo | #1010501 // Browse Downloaded Diagrams [dev.]

JavaX source code (desktop) [tags: use-pretranspiled] - run with: x30.jar

Download Jar. Uses 3874K of libraries. Click here for Pure Java version (13687L/99K).

1  
!7
2  
3  
concept Drawing {
4  
  S globalID = aGlobalID();
5  
  S name;
6  
  S calStructure;
7  
}
8  
9  
static new CirclesAndLines cal;
10  
static Canvas canvas;
11  
static Drawing drawing;
12  
sbool autoVis;
13  
14  
p {
15  
  //db();
16  
  for (S s : downloadedDiagramStructures())
17  
    cnew(Drawing, name := "Downloaded", calStructure := s);
18  
    
19  
  substance();
20  
  swing {
21  
    fixCAL();
22  
    canvas = cal.show(1000, 600);
23  
    /*addToWindowNorth(canvas, withMargin(jcenteredline(
24  
      jbutton("New circle", f newCircle)
25  
    );
26  
    addToWindow(canvas, withMargin(jcenteredline(
27  
      jbutton("New drawing", f newDrawing),
28  
      jbutton("Save drawing", f saveDrawing),
29  
      jbutton("Save drawing as...", f saveDrawingAs),
30  
      jbutton("PUBLISH", f publish)));*/
31  
    //addToWindow(canvas, withMargin(jcenteredlabel("Create connections by dragging between circles with right mouse button")));
32  
    addDrawingsList();
33  
    centerFrame(canvas);
34  
    hideConsole();
35  
  }
36  
}
37  
38  
svoid newCircle {
39  
  final JTextField text = jtextfield();
40  
  showFormTitled("New Circle", "Text", text, r-thread { loading {
41  
    S theText = getTextTrim(text);
42  
    double x = random(0.2, 0.8), y = random(0.2, 0.8);
43  
    if (autoVis)
44  
      cal.circle_autoVis(theText, x, y);
45  
    else
46  
      cal.circle(theText, x, y);
47  
    canvas.update();
48  
  }});
49  
}
50  
51  
static Drawing saveDrawing() {
52  
  ret saveDrawing(drawing != null ? drawing.name : "");
53  
}
54  
  
55  
static Drawing saveDrawing(S name) {
56  
  if (empty(name)) {
57  
    final JTextField tfName = jtextfield(makeUpName());
58  
    showFormTitled("Name drawing",
59  
      "Name", tfName,
60  
      r { 
61  
        saveDrawing(or2(getTextTrim(tfName), "Untitled"));
62  
      });
63  
    null;
64  
  }
65  
  
66  
  cal.title = name;
67  
  S s = cal_structure(cal);
68  
  if (drawing == null)
69  
    drawing = cnew(Drawing);
70  
  cset(drawing, calStructure := s, +name);
71  
  setDrawing(drawing);
72  
  ret drawing;
73  
}
74  
75  
svoid newDrawing {
76  
  setCAL(new CirclesAndLines);
77  
  setDrawing(null);
78  
}
79  
80  
sS drawingName(Drawing d) {
81  
  ret d == null ? "" : "[" + d.id + "] "
82  
    + (nempty(d.name) ? quote(d.name) + " " : "");
83  
}
84  
85  
static L makeDrawingsTable() {
86  
  new L l;
87  
  for (final Drawing d : reversed(list(Drawing))) {
88  
    CirclesAndLines cal = cal_unstructure(d.calStructure);
89  
    l.add(litorderedmap("Drawing" := drawingName(d),
90  
      "Circles + Relations" := join("|",
91  
        concatLists(
92  
          collect(cal.circles, 'text),
93  
          collectTreeSet(cal.lines, 'text)))));
94  
  }
95  
  ret l;
96  
}
97  
98  
static Drawing drawingFromTable(JTable table, int row) {
99  
  ret getConcept(Drawing, parseFirstLong((S) getTableCell(table, row, 0)));
100  
}
101  
102  
svoid addDrawingsList {
103  
  final JTable table = sexyTableWithoutDrag();
104  
  O load = voidfunc(int row) { loadDrawing(drawingFromTable(table, row)) };
105  
  onDoubleClick(table, load);
106  
  
107  
  tablePopupMenuItem(table, "Rename...", voidfunc(int row) {
108  
    final Drawing d = drawingFromTable(table, row);
109  
    final JTextField tf = jtextfield(d.name);
110  
    showFormTitled("Rename Drawing",
111  
      "Old name", jlabel(d.name),
112  
      "New name", tf,
113  
      r {
114  
        cset(d, name := getTextTrim(tf));
115  
        setDrawing(d);
116  
      });
117  
  });
118  
  
119  
  tablePopupMenuItem(table, "Show structure", voidfunc(int row) {
120  
    final Drawing d = drawingFromTable(table, row);
121  
    showWrappedText("Structure of drawing", cal_simplifiedStructure(d.calStructure));
122  
  });
123  
  
124  
  tablePopupMenuItem(table, "Copy structure to clipboard", voidfunc(int row) {
125  
    final Drawing d = drawingFromTable(table, row);
126  
    copyTextToClipboard(cal_simplifiedStructure(d.calStructure));
127  
  });
128  
  
129  
  tablePopupMenuItem(table, "Delete", voidfunc(int row) {
130  
    final Drawing d = drawingFromTable(table, row);
131  
    removeConcept(d);
132  
  });
133  
  
134  
  addToWindowSplitRight_aggressive(canvas, tableWithSearcher(table), 0.7f);
135  
  awtCalcOnConceptsChange(table, r { dataToTable(table, makeDrawingsTable()) });
136  
}
137  
138  
svoid fixCAL() {
139  
  cal.imageForUserMadeNodes = whiteImage(10, 10);
140  
}
141  
142  
svoid setCAL(CirclesAndLines cal) {
143  
  main.cal = cal;
144  
  fixCAL();
145  
  Canvas c = canvas;
146  
  canvas = cal.makeCanvas();
147  
  awtReplaceComponent(c, canvas);
148  
  //new CirclesRelater(canvas, cal);
149  
}
150  
151  
svoid setDrawing(Drawing d) {
152  
  drawing = d;
153  
  setFrameTitle(canvas, drawingName(d) + " - " + programName());
154  
}
155  
156  
svoid loadDrawing(Drawing d) {
157  
  setDrawing(d);
158  
  CirclesAndLines cal = cast unstructure(d.calStructure);
159  
  //cal_setAutoVis(cal);
160  
  setCAL(cal);
161  
}
162  
163  
svoid publish {
164  
  final Drawing d = saveDrawing();
165  
  if (d == null) ret;
166  
  thread { loading {
167  
    S fullName = "Drawing " + d.globalID + " " + renderDate(now())
168  
      + " - " + or2(d.name, "Untitled");
169  
    S url = uploadToImageServer(canvas.getImage(), fullName);
170  
    infoBox("Image uploaded to server! " + url);
171  
    S id = createSuperHighSnippet(structure(d), fullName, 56 /*SN_AI_DRAWING*/, null, null);
172  
    infoBox("Drawing uploaded. " + fsI(id));
173  
  }}
174  
}
175  
176  
sS makeUpName() {
177  
  Circle c = first(cal.circles);
178  
  ret c == null ? "" : c.text;
179  
}
180  
181  
svoid saveDrawingAs {
182  
  drawing = cnew(Drawing);
183  
  saveDrawing();
184  
}
185  
186  
svoid uploadAll {
187  
  run(#1009985);
188  
}

Author comment

Began life as a copy of #1009961

download  show line numbers  debug dex  old transpilations   

Travelled to 13 computer(s): aoiabmzegqzx, bhatertpkbcr, cbybwowwnfue, cfunsshuasjs, gwrvuhgaqvyk, ishqpsrjomds, lpdgvwnxivlt, mqqgnosmbjvj, pyentgdyhuwx, pzhvpgtvlbxg, tslmcundralx, tvejysmllsmz, vouqrxazstgt

No comments. add comment

Snippet ID: #1010501
Snippet name: Browse Downloaded Diagrams [dev.]
Eternal ID of this version: #1010501/3
Text MD5: 877b8b75ca0b2f3aba48668f27bc442d
Transpilation MD5: 5f1f62ecd2b04750a10a5cdf9cfe6e62
Author: stefan
Category: javax / gui
Type: JavaX source code (desktop)
Public (visible to everyone): Yes
Archived (hidden from active list): No
Created/modified: 2017-09-18 20:29:02
Source code size: 5110 bytes / 188 lines
Pitched / IR pitched: No / No
Views / Downloads: 549 / 1107
Version history: 2 change(s)
Referenced in: [show references]