JavaBlock - edytor schematów blokowych

10

Napisałem taki sobie mały programik do tworzenia i symulacji schematów blokowych. Napisany w Javie. To mój pierwszy poważniejszy projekt w Javie, drugi w ogóle (pierwszy to był klon gry BlockOut w 3d). Jest to nieco mój poligon doświadczalny w dziedzinie Javy.
Stwierdziłem że przed wydaniem kolejnej stabilnej wersji przyda się jeszcze nieco testów.

user image

URL:
http://javablock.sf.net/
https://sourceforge.net/projects/javablock/

Instalacja online:
http://javablock.sf.net/install.jnlp

Program jest po polsku i angielsku (wykrywa i wybiera Java)
Moja angielski pisana na szybko słaba, wy nie bić :)

Cechy programu:

Tworzenie schematów blokowych

Symulacja schematów przy użyciu JavaScript, lub Python (opcjonalnie)

Śledzenie wartości zmiennych

Generowanie skryptów (niezbyt optymalnych) Python i JavaScript ze schematu (trzeba jeszcze ręcznie dopisać klasę obsługującą wejście/wyjście)

"Ułatwiacze" i uniwersalizacja składni JavaScript i Python (np. i++ w Pythonie zamieniane na i+=1)

Rysowanie niskopoziomowe (canvas2d) i prosta implementacja poleceń LOGO

Definiowanie struktur (w przyszłości klas i ich metod)

Działa jako aplet

Tryb pascala (np. można używać := do przypisania, = do porównywania, <> zamiast !=)

Lekki i łatwy w obsłudze

Bezpośrednie wysyłanie i pobieranie schematów do i z pastebin.com

"Niekodowe" edytory bloków - niewymagające znajomości składni (np. wejście/wyjście, blok startowy, bloki obsługujące dodatki)

Schemat jako funkcja - możliwość potraktowania schematu jak funkcji (również rekurencja)

Aplikacja "sędziego" do sprawdzania poprawności wielu schematów jednocześnie (w przygotowaniach)

Ładowanie skryptów dla poszczególnych silników

Ładowanie klas Java do użytku w schematach

Wymagania:

Rozdzielczość 1024x600 (obcina lewy panel), zalecana wyższa niż 1024x800

256 MB RAM, zalecane 1GB

20 MB na HDD

System dowolny z Javą SE 1.6

Połączenie z internetem (sprawdzanie wersji, wysyłanie/ściąganie schematów z internetu, instalacja modułów dodatkowych)

Procesor trudno określić - im szybszy tym szybciej będzie symulował:)

Przykładowe schematy:

Ciąg Fibonacciego metodą tablicy:
http://www.fotosik.pl/pokaz_obrazek/8801e17abcc8edd2.html]
Ciąg Fibonacciego metodą 2 zmiennych (i zmiennej tymczasowej)
http://www.fotosik.pl/pokaz_obrazek/cd313f03857fd197.html
powyższe dwa:
Aplet: http://javablock.sourceforge.net/applet.php?url=http://pastebin.com/download.php?i=325akZen
Pastebin ID: 325akZen

Losowanie unikalnych liczb z użyciem "buforu" (tablicy przechowującej informację, czy dana liczba została wylosowana)
http://www.fotosik.pl/pokaz_obrazek/1ecab0fcd5cbb709.html
Losowanie unikalnych liczb metodą przeszukiwania tablicy:
http://www.fotosik.pl/pokaz_obrazek/a4983aa779ae1f2c.html
powyższe dwa:
Aplet: http://javablock.sourceforge.net/applet.php?url=http://pastebin.com/download.php?i=s2jZkVft
Pastebin ID: s2jZkVft

Krzywa Beziera
http://javablock.sourceforge.net/applet.php?url=http://pastebin.com/download.php?i=2bYQbxhC
Pastebin ID: 2bYQbxhC

I taki mało przydatny bonus: rysowanie prostego atraktora
Applet:
http://javablock.sourceforge.net/applet.php?url=http://pastebin.com/download.php?i=x3ZY0aXS
Pastebin ID: ZfMgChVa
Efekt: http://i52.tinypic.com/27zix69.png

Mając program na HDD, można te schematy wczytać wybierając z menu: Plik> Importuj z pastebin, potem wkleić w okienko Pastebin ID i chwilę poczekać.

Czekam na zgłoszenia błędów i propozycje.
Myślałem nad dodaniem JRuby, ale musiałbym mocno zmodyfikować dotychczasowy kod, no i się Ruby nauczyć:p Klasy i funkcje same się nie wygenerują.

1

Ogólnie świetny projekt :) Na razie nie mam czasu się pobawić dokładniej, z perspektywy użytkownika brakuje możliwości przewijania schematu i dowolnego przesuwania widoku za pomocą myszki. Wiesz o co mi chodzi? Na przykład przesuwam sobie widok główny nieco wyżej i przybliżam sobie interesujące mnie bloczki. Teraz mogę sobie przybliżyć na sztywno tylko w środek schematu i nie mam możliwości przesuwania go nawet jeśli po przybliżeniu jest tylko linia łącząca. Brak takiej funkcjonalności skreśla praktycznie program przy budowie nieco większych schematów bo jego używanie staje się niewygodne.
Najlepiej by było jakbym mógł sobie kliknąć w miejsce poza schematem i mając wciśnięty klawisz myszki przesuwać widok dowolnie po dostępnej przestrzeni :P

0

Nowa wersja 0.6 się zbliża, dostałem ostatnio parę maili z propozycjami i się trochę pobawiłem:

  • Przybliżanie do punktu (nie działa za dobrze, ewidentnie do poprawy)
  • Scrollbary (też niezbyt estetyczne na razie, ale nie pozwalają się zgubić w schemacie, nie działa przy absurdalnie małych schematach)
  • Przyciąganie do siatki (domyślnie włączone wymuszenie, bez wymuszenia trzeba CTRL trzymać)
  • Przycisk "Ukryj konsolę" służy także do pokazywania konsoli (nie trzeba już celować w belkę)
  • Zapisywana jest ścieżka ostatnio edytowanego schematu i jest ładowany na starcie, jeśli nie był zapisany przez użytkownika, to automatycznie był zapisywany w ~/.JavaBlock/last.jbf (wcześniej zawsze tam był zapisywany)
  • Nowe wyróżnienie wykonywanego bloku - pogrubione obramowanie (user skarżył się na słabo widoczne wyróżnienie na projektorze)

Numerku na razie nie będę zmieniał, ostatnie zmiany były zbyt brutalne i nieprzetestowane. Jeszcze nie sprawdzałem działania wczytywania tych plików na Windowsie (w szkole ktoś zainstalował wersję Javy 1.5 zamiast 1.6 :/)
Będę jeszcze próbował z blokowaniem myszy Robotem.

Dostępne przez instalator jako wersja niestabilna lub z linku:
http://javablock.sourceforge.net/JavaBlock.jar

0

0.5.4, 19-KiBowy przyrost wagi, poprawione wiele błędów, przyspieszono wczytywanie schematów i dodano nowe ficzery:

  • Dzielenie połączenia, podczas próby utworzenia połączenia z istniejącym połączeniem (tworzy tam nowy węzeł)
  • Zmodyfikowany edytor wejścia/wyjścia
  • Działa typ "Tablica znaków"* w przypadku Pythona (JS strzela fochy)
  • Schematowe znaczki ("=" na "←", "!=" na "≠", "<=" na "≤", itd) (opcjonalne)

*Wczytuje stringa i zamienia go na tablicę liczb odpowiadających.

Miałem przygotować kolejny żenujący splashscreen, jako ostatnia wersja RC, ale jakoś mi się nie chciało. Aktualny jest wystarczająco żenujący :)
Do wersji 0.6 wystawię nową wersję manuala. Muszę zrobić screenshoty z polskiej wersji, bo mi ubu zrobiło prima aprilisowy żart i mam system po angielsku, a więc i Javovy properties mi tylko angielski czyta. Zmiana ustawień systemowych nic nie dała :/

BTW. udało mi się w końcu pythona na telefonie zainstalować. DZIAŁA! Muszę tylko dokończyć pisać InputReadera w wersji na telefon

Instalacja:
http://javablock.sourceforge.net/install.jnlp
Download samego programu:
http://javablock.sourceforge.net/JavaBlock.jar (zawsze najnowsza)
http://javablock.sourceforge.net/JavaBlock_stable.jar (najnowsza stabilna)

0

Potrzebowałbym kilku testerów przed wydaniem 0.6

Potrzebne testy bloku wejścia/wyjścia (dalej nie działa poprawnie typ "Tablica znaków" dla JS, strzela fochy i tyle)
Dodana opcja "Rysuj standardowy kształt" do edytora bloku IO. Dzięki niemu można używać edytora niekodowego, a jednocześnie rysować standardowy kształt bloku.

Ale przede wszystkim nowego zoptymalizowanego i zminimalizowanego interfejsu:
user image

  • Panel edytora się pokazuje tylko gdy jest potrzebny
  • Panel edytora jest rozszerzalny, Resizera sam napisałem
  • Przebudowałem color pickera (też własnej roboty)
  • Nie ma RadioButtonów do wyboru czego ma zmieniać kolor, tylko będzie sprawdzany stan CTRL (ramka) i Shift (tekst)
  • Zamiast ogromnych buttonów z podstawowymi blokami dałem wszystkie standardowe (bez tych do obsługi dodatków Canvas2d i LOGO), a sam blok Wejścia/Wyjścia występuje osobno w wersji opartej o kod, jak i "łatwej" niekodowej (osobno dla wejścia i wyjścia)
  • Mieści się w 522px wysokości, więc netbooki sobie poradzą
  • Wydaje się być dużo szybszy od JSplitPane

Skrócenie miało na celu ułatwienie osadzania programów w apletach na wąskich stronach, np: http://www.algorytm.org/procedury-numeryczne/calkowanie-numeryczne-metoda-prostokatow/metoda-prostokatow-1-jbf.html

Scrollbary dalej bardzo niepraktyczne przy oddaleniu i małych schematach, ale w niemieszczących się na ekranie schematach już się przydają.

No i w rekompensacie za brak żenującego loga przy ostatniej wersji, całkowita zmiana stylu loga: http://javablock.sourceforge.net/img/splash.jpg . Wykonane w blenderze (wcześniej Inkscape + GIMP)

Aplet: http://javablock.sourceforge.net/applet.php
Dostępna z poziomu instalatora jako wersja niestabilna.

Pozostaje jeszcze manuala zupdate'ować, bo zmiany są zbyt drastyczne w standardowej konfiguracji.
TODO w 0.8:

  • uniwersalizacja generatorów kodów do silników skryptów
  • metody klas, wiele funkcji na schemacie
  • blok Switch
  • klonowanie schematu do podglądu działania w symulatorze z interwałem>0
  • ładowanie bibliotek w .jar do schematu (aktualnie tylko .class, więc niezbyt wygodne dla większych bibliotek)
0

Dokopałem się w necie że na pewnej konferencji metodycznej dla nauczycieli przedmiotów informatycznych wszystkich typów szkół mój program został zaprezentowany jako alternatywa dla ELI. Jednak była tam wymieniona wada: zbyt częste aktualizacje. Więc zmieniam "plan wydawniczy" i robię update'y numerków rzadziej. Nie wiedziałem że szybki rozwój to wada:/

Najnowsze zmiany programu:

  1. Tłumaczenie większości komunikatów (wcześniej wyświetlałem gołe Stringi, teraz wczytuję z .proporties)
  2. Skróty klawiszowe do tworzenia bloków (CTRL/SHIFT + 1/2/3/4/5/6; kolejność tak jak na lewym pasku narzędziowym)
  3. Ulepszenie mechanizmu dodającego bloki: jeśli przy dodawaniu był zaznaczony jakiś, automatycznie utworzy się połączenie od tego zaznaczonego do nowo utworzonego i od nowego do tego, z którym ten zaznaczony był połączony (jeśli był).
    . Do wyświetlania zawartości bloków użyłem JLabeli zamiast TextLayout. I tu pytanie: jak bardzo zgrzeszyłem? Z JLabelami wygląda to dużo ładniej, mogę użyć HTMLa, a rysuję poprzez label.paint(g2d);, gdzie g2d to Graphics2D z BufferedImage. Rysowanie odbywa się oczywiście w wątku Swinga.
  4. "Tekst jest HTMLem" - traktuje komentarz jako kod HTML i nie przerabia < na <, jeśli ta opcja jest włączona, jsyntaxpane ustawia kolorowanie na HTML w edycji komentarza.
  5. Poprawa denerwującego błędu ze SpinBoxem, którego wartość nie chciała się zaktualizować przed zapisem treści bloku w edytorze bloku wejścia.

Zmiany aplikacji sędziego:

  1. Zapis do obrazków
  2. Poprawione kilka błędów
  3. Możliwość wyłączenia wykonania algorytmów

Zmiany na stronie:

  1. Dodana strona z przykładowymi algorytmami
  2. Ukrycie adresów e-mail
  3. Formularz w dziale Contact

strona: http://javablock.sf.net/
program: http://javablock.sf.net/JavaBlock.jar
aplet: http://javablock.sf.net/applet.php

0

Hmm.. dziwne. Kliknalem ten link w Twoim poście http://javablock.sourceforge.net/applet.php?url=http://pastebin.com/download.php?i=2bYQbxhC (Bezier) i otworzyło mi działający aplet. Super. Chciałem zgłosić błąd (?) - po zaznaczaniu elementów na tym diagramie przesuwały się one trochę w prawo. Ale tylko po pierwszym zaznaczeniu. Coś jakby się wyrównywały do siatki (której nie widać). Ale teraz... dwie kolejne próby otworzenia tego okazały się kolejnymi błędami - w klockach nie ma żadnego kodu. Same kształty (pomniejszone, puste). Po zaznaczeniu klocka w "okienku właściwości" widać dane/kod ale w klockach się to nie wyświetla.

0
[losowa nazwa] napisał(a)

Chciałem zgłosić błąd (?) - po zaznaczaniu elementów na tym diagramie przesuwały się one trochę w prawo. Ale tylko po pierwszym zaznaczeniu. Coś jakby się wyrównywały do siatki (której nie widać).

Niektóre schematy co tam są były robione przed snappingiem, dlatego przy pierwszym przenoszeniu się wyrównały do siatki. Musiałem jakoś przegapić te schematy ze starych wersji. Siatkę można włączyć: Ustawienia>Rysowanie>Rysuj siatkę

[losowa nazwa] napisał(a)

Ale teraz... dwie kolejne próby otworzenia tego okazały się kolejnymi błędami - w klockach nie ma żadnego kodu. Same kształty (pomniejszone, puste). Po zaznaczeniu klocka w "okienku właściwości" widać dane/kod ale w klockach się to nie wyświetla.

Stosowanie dwóch silników skryptowych (żółwi JavaScript i ciężki, ale stosunkowo szybki Python) o różnych składniach wymusza czasami rozdzielenia kodu, tzn. przypisania konkretnej linijki danemu silnikowi. Linie rozpoczynające się od #j są przeznaczone JavaScriptowi, a od #p Pythonowi. Wszelkie inne kombinacje z #^ są traktowane jak komentarze i nie są w ogóle wyświetlane.

Jeżeli chodzi o przykład z losowaniem unikalnych liczb, to pochodzi on z czasów gdy był tylko blok startu, końca, przetwarzania, wejścia/wyjścia i decyzyjny. Nie było jeszcze Przeskoku, który teraz służy do robienia łamanych połączeń. Teraz jest ich znacznie więcej (w sumie 13 + 2 do dodatków). Na stronie są przykłady które nie powodują problemów przy aktualnej wersji.

Ostrzeżenia wyskakują przy próbie otwarcia w aplecie schematu, który ma wybrany silnik Pythona, bo mi się jeszcze nie udało go zapędzić do roboty w aplecie.

0

Nie wiem, czy zrozumiałeś - przy otwieraniu przykładu Krzywa Beziera raz się wszystko normalnie wyświetla a potem już tylko puste klocki (bez treści). Nie wiem, czy to ma związek z JS/Python. A propos - masz błąd w komunikacie informującym o Pythonie i apletach - znaczek "\n" ;)

0

Dzięki, komunikaty poprawiłem, wyślę później. Faktycznie występuje błąd z niewyświetlaniem kodu. Wywala kilka InterruptedException (których nie wywala przy normalnym uruchomieniu), ale problem jest tylko gdy opcja "Użyj JLabeli" jest włączona. Przy normalnym uruchomieniu problemu nie ma. Podobnie przy pierwszym uruchomieniu apletu w przeglądarce.
Czyżby kolejny ficzer, którego będę musiał wyłączyć w aplecie? Spróbuję poprawić metody kończące wątki.

//EDIT:
Jaka funckja jest wywoływana przy "siłowym" zamykaniu apletu? Jeśli dam plik>Zamknij program wykona swoje oczyszczanie i nie będzie błędów wątków. Jeśli okno będzie odświeżone tylko, pamięć się nie wyczyści, a wątek będzie zamknięty na siłę. Metoda finalize, ani componentHidden z ComponentListenera nie reagują.

//EDIT2:
wątki nie były tego przyczyną. Zauważyłem że w ustawieniach programu jeden z JLabeli też się nie wyświetla.
Problem rozwiązany: w metodzie destroy() apletu wywołałem funkcję która normalnie wykonuje się przy zamykaniu okna, w tym i System.exit(0), który wywołuje całkowite wyłączenie maszyny (wcześniej maszyna w ogóle się nie wyłączała, tylko do tej samej pamięci ładowała cały program od nowa, stąd pewnie te problemy).

0
Razi91 napisał(a)

Dokopałem się w necie że na pewnej konferencji metodycznej dla nauczycieli przedmiotów informatycznych wszystkich typów szkół mój program został zaprezentowany jako alternatywa dla ELI. Jednak była tam wymieniona wada: zbyt częste aktualizacje. Więc zmieniam "plan wydawniczy" i robię update'y numerków rzadziej. Nie wiedziałem że szybki rozwój to wada:/

W takim razie warto by przemyśleć, czy by nie dodać do programu jakiejś funkcji samoaktualizacji z danymi umieszczonymi w internecie. Wtedy mógłbyś sobie program aktualizować jak często by Ci się podobało.

1

Gdy edytuje sobie kod w bloczku, i wcisnę CTRL+Z, to zamiast cofnąć zmiany w tekście to cofa w bloczkach, argh, przedłużyło mi to robotę dwukrotnie bo trudno bylo wyzbyć się nawyku używania cofnijki :/

0

W standardzie JEditorPane nie ma czegoś takiego jak cofnij/powtórz, nie przechwytuje skrótu ctr+z, więc robi to główne okno, które wywołuje cofanie w samym schemacie. Zablokowałem to.

Natomiast JSyntaxPane (którego możesz zainstalować przez instalator programu lub poprzez Ustawienia>Ustawienia>Moduły Zewnętrzne) przechwytuje ctrl+z, ale też ta historia niezbyt dobrze działa, pewnie gdzieś mój błąd.

Dzięki za info, wcześniej nie interesowałem się mechanizmem cofania w edytorach kodu. Postaram się to naprawić jak najszybciej. Na razie pobawię się tym JSyntaxPane, później może się zajmę historią w standardowym JEditorPane.

1

Miałem to zrobić już dawno, ale jakoś nie miałem motywacji. Przy okazji powiem że JavaBlock wygrał tegoroczny Kaliski Konkurs Informatyczny, dzięki czemu zyskałem na mobilności :D

Nowa wersja JavaBlock oznaczona numerkiem 0.6.1, ostatnia już chyba na licencji Freeware, później będzie to prawdopodobnie lGPL (być może i numerek 0.7).

Co nowego:

  • poprawiono wiele błędów i uciążliwości
  • Więcej przetłumaczonych komunikatów
  • Generator pętli For i konstrukcji Switch[1]
  • Zamiana bloków miejscami (w przyszłości ułatwi używanie gotowych wstawek z generatorów)
  • Dodatek LOGO rozszerza teraz tylko canvas2d, dodane skalowanie (jeszcze do poprawy)
  • Animacje (płynne podświetlanie bloków nad którymi jest kursor)
  • Podpowiedzi
  • Loader pluginów[2]

[1] planuję też zrobić blok Switch.

[2] instrukcja: http://sourceforge.net/apps/mediawiki/javablock/index.php?title=Dodatkowe_bloki_jako_pluginy_%28pl%29
Ładują się zarówno w normalnie uruchomionym programie jak i przez aplet. Interfejs nie jest jeszcze ustalony, planuję jeszcze dodać jakieś metody jako wymagane.
Do wersji 0.7 planuję zrobić downloader pluginów.
Pluginami będzie można dodać:

  • blok wraz z edytorem (już działa)
  • generator bloków
  • zestaw metod, klas i fragmentów skryptów do użycia w schematach.
    Źródła przykładowego dodatkowego bloku jako plugin: http://javablock.sourceforge.net/plugins/testBlock.zip (nie ma sensu, ale jest tylko przykładem)
    Plik .jar trzeba umieścić w ~/.JavaBlock/plugins/

Co do poprawy:

  • Aplet, metody kończące prace nie zawsze poprawnie zapisują schemat powodując "Premature end of file" przy starcie programu.
  • Drobne poprawki działania obszaru roboczego (mechanizm zaznaczania/odznaczania)

Cofanie kodu dalej nie działa jak powinno, ale w listenerze akcji sprawdzam komponent mający focusa. Jeśli to jakiś edytor tekstu, nie wykonuje akcji cofania.

Nad czym będę pracował:

  • Generator schematu z kodu (coś na wzór tego z VisualAlgorithmEditor, tyle że efekty będą czytelniejsze:p)
  • Książka na wikibooks
  • Uniezależnienie menedżera od pracy na schematach (pozwoli na implementację schematów NS, ułatwiona obiektowość itd.)
  • Interfejs na obszarze roboczym
  • Lepszy generator kodu wykrywający proste ścieżki bez rozgałęzień.
  • Praca grupowa (dopiero przy warstwach i obiektówce)

Linki:
Instalator offline: https://sourceforge.net/projects/javablock/files/0.6/0.6.1/install.zip/download
Instalator online: http://javablock.sourceforge.net/install.jnlp
Aplet: http://javablock.sourceforge.net/applet.php
sam jar: http://javablock.sourceforge.net/JavaBlock.jar (wystarczy do uruchomienia, można w nim dociągnąć dodatki)

I nowy przykład wykorzystania LOGO: http://javablock.sourceforge.net/applet.php?url=http://javablock.sf.net/jbf/maze.jbf

0

Gratuluję wygranej :)
Fajnie by było gdyby był jakiś export projektu w neta, np podajesz dane do gmaila a progsik gdzieś tam kitra projekty, było by to dobre uzupełnienie do uruchamiania z przeglądarki.

0

Chciałem zrobić w JavaEE portal do właśnie przechowywania prac, wysyłania do sprawdzania itd., coś jak main.edu.pl, tyle że nauczyciele zakładają profile klas i zamieszczają tam zadania (nie tylko do JavaBlock), uczniowie wysyłają swoje rozwiązania, a system to sprawdza i ocenia.

Na razie pastebin powinien wystarczyć: wysyłasz przez Plik>Eksportuj do pastebin, zapisujesz se gdzieś (np.na mailu) link do apletu.

0

Oh, nice idea :) Może wypali skoro sam program wypalił :)
Zabawa z pastem jest raczej marna w porównianiu do jakiegos dedykowanego exportu który pokazywałby projekty w stylu np workbencha w netbeasnie ( tak to się tam nazywa? )

0

Gratulacje! :) Oto co może dobry pomysł :)

0

Dzięki:)

Wpadłem na jeszcze jeden genialny pomysł, ale dużo roboty przede mną.

Kolejna wersja 0.7 będzie już na lGPL, ale bardziej w celach "edukacyjnych", bo później zmiany w kodzie będą duże, nawet bardzo duże. Tworząc program cały interfejs był statyczny. Dopiero później dodałem "karty" i obsługę wielu schematów jednocześnie. Namieszało to trochę w kodzie. Potem dodałem inne interfejsy (konsole u dołu, pasek narzędzi po lewej, zamiast tego szerokiego) i zrobił się kompletny burdel. Klasa mająca obsługiwać jeden schemat zaczęła cały interfejs obsługiwać.

Teraz mam zamiar usunąć stare interfejsy, a przynajmniej stare sposoby jego kreowania i oddzielić sam menedżer schematów w dokumencie od samych schematów. Co mi to da?

W ten sposób będzie mi łatwiej stworzyć obsługę obiektów, ale nie tylko. Najpierw planuję zrobić edytor tzw. schematów NS i "schemat w schemacie". poza tym dałbym radę upchać i edytor schematów elektronicznych, które również dałoby radę obsługiwać jako obiekty z poziomu schematów. Dodatkowo zrobi się jeszcze zwykły edytor kodu JS/Python. Z programu zrobi się całe IDE do programowania mieszanymi metodami:D Dodatkowe "arkusze" można by instalować pod postacią pluginów.

Myślałem nad NetBeans Platform, ale wtedy nie dałoby się tego umieścić jako aplet.

Ewentualnie skoro i tak zamierzam zrobić lGPL, to darmowa licencja pozwoliła by tylko na schematy blokowe, a pozostałe byłyby płatne:) Z tego co wiem to lGPL nie zabrania tworzenia płatnych zamkniętych pluginów.

Czeka mnie jednak sporo roboty, a póki IP Boost w LoLu jest to czasu za dużo nie mam...

0

Z LGPL jest trochę skomplikowana sprawa, czasem produkt "pochodny" musi być LGPL, czasem nie. Lepiej użyć licencji X11.

Najlepiej zrób uważny przegląd licencji, zanim się na jakąś zdecydujesz.

0

Dzięki za ostrzeżenie, poczytam uważniej o tych licencjach.

Klasy powrzucane do osobnych pakietów, interfejs prawie zrobiony, zostało historię przenieść do każdego schematu z osobna (i tak będzie zamieniona na pośrednio nieliniową, zapis akcji do stringów, unikatowe identyfikatory bloków i ich przechowywalnia).
Jeszcze tylko 3 klasy zgłaszają błędy.

I takie pytanie: czy usunąć definitywnie stare interfejsy?

Nowy: http://javablock.sourceforge.net/img/JB06.png
Stary: http://javablock.sourceforge.net/img/JB3.png

Nowy jest zoptymalizowany do stylu Nimbus, pod innymi wygląda ohydnie. Stary daje więcej miejsca w pionie, wydaje mi się że żre mniej RAMu (przejmuje się ktoś tym w dzisiejszych czasach?), bo sam "arkusz" nie ma osobnego interfejsu. Usunięcie starego ułatwi mi sprawę przerabiania kodu, ale szkoda mi go:/ Trochę nad nim siedziałem. Pierwsze moje GUI jakie w SWINGu zrobiłem.

Zrobiłem też wstępny projekt wyglądu schematu NS:
http://razi.dtdns.net:82/NS.svg
Z mojego kompa przez Dynamic DNS, później zuploaduje. Kompa mam raczej włączonego:p

Od "standardowych" schematów NS różni się nieco budową: ma początek i koniec w postaci półkoli. Mają one symbolizować sygnaturę funkcji i jej zakończenie (return).
Myślę jeszcze jak przenieść edytory bloków ze schematów blokowych do NS. Myślę że klasa interfejsu wystarczy.

Przy okazji: zmodyfikowałem mój archaiczny "framework" PHP (w realu to tylko jedna funkcja do ładowania szablonów i wypełniania ich + każda strona osobno oskryptowana no i plik z kilkoma "klasami" do MySQL) na którym opieram większość moich "stron" . Wykrywa lokację i ustawia język. Na Polski działa, czy na Angielski nie wiem, ale w górnym lewym rogu można zmienić. Ah te moje wielkie zdolności JavaScript i PHP :)

//edit: program doprowadzony do stanu kompilowalności i uruchamialności:D Pozostało pousuwać stare konfiguratory i interfejsy i mogę się brać za edytor NS. W międzyczasie rozbiję plik Flowchart.java który aktualnie odpowiada za wygląd + mechanikę działania + generowanie skryptów + interfejs samego pojedynczego dokumentu na mniejsze klasy.
Dotychczasowe pluginy będą niekompatybilne, jakby ktoś chciał jakiś napisać, niech poczeka do wersji 0.8

0

Uruchomiłem właśnie JavaBlock, nie wiem jaka wersja, bowiem Pomoc => About nie działa.
Inne uwagi:

  1. Większość przycisków w pasku narzędzi nie ma "tooltipa", trzeba zgadywać do czego służą.
  2. Przy próbie otwarcia pliku, program pyta czy zachować zmiany. A ja nawet nie próbowałem niczego edytować.
  3. Można zamknąć program (bez żadnego ostrzeżenia), w którym się sporo narysowało i nic nie zapisało.
  4. Przy próbie otwarcia kolejnego pliku program proponuje Moje dokumenty, a nie katalog używany ostatnio.
  5. Po co jest aktywny przycisk Create new folder podczas otwierania pliku?
0
bogdans napisał(a)

Uruchomiłem właśnie JavaBlock, nie wiem jaka wersja, bowiem Pomoc => About nie działa.
Inne uwagi:

  1. Większość przycisków w pasku narzędzi nie ma "tooltipa", trzeba zgadywać do czego służą.
  2. Przy próbie otwarcia pliku, program pyta czy zachować zmiany. A ja nawet nie próbowałem niczego edytować.
  3. Przy próbie otwarcia kolejnego pliku program proponuje Moje dokumenty, a nie katalog używany ostatnio.
  4. Po co jest aktywny przycisk Create new folder podczas otwierania pliku?
  1. Jakoś nie chciało mi się robić, a nikt nie narzekał że coś jest nieopisane
  2. Może poprawię w nowszej wersji, muszę zrobić inny sposób trzymania historii
  3. Spróbuję to zmienić, dla mnie to też trochę uciążliwe było
  4. Nie wiem po co, po prostu jest, nie moja decyzja

W kodzie trochę namieszałem i mam sporo do naprawy, ostatnio brakowało mi chęci i czasu do zajmowania się tym programem, ale miałem zamiar do niego wrócić w najbliższym czasie.

0
bogdans napisał(a)
  1. Po co jest aktywny przycisk Create new folder podczas otwierania pliku?
Razi91 napisał(a)
  1. Nie wiem po co, po prostu jest, nie moja decyzja

Bardzo ciekawe stwierdzenie, a właściwie podsumowanie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1