Deník metaCASE
1. 2. 2008 (21,7KB)
Dnes byl založen projekt a naimplementovány některé součásti.
Jedná se o strukturu metamodelu a základní elementy grafického editoru.
Struktura bude používána až mnohem později, nyní je možné ověřit
pouze funkci drag&drop.
2. 2. 2008 (36,5KB)
V projektu přibyla rutina pro práci s vícenásobně
použitými int hodnotami. Jedná se o sadu zabalovacích tříd. Změna se tedy
projeví u všech odkazů stejně. Od boxingu Javy se liší tím, že je
modifikovatelná. Naimplementovány jsou:
·
IntBox
-
Pro práci s celočíselnými hodnotami
·
IntBoxAdd
-
Odlišuje se od IntBox tím, že přičítá hodnotu (posun oproti IntBox)
·
PointBox
-
Pro práci s 2D body (2x IntBox)
·
PointBoxAffineCombination
-
Průměr, resp. střed 2 bodů
·
RectBox
-
Představuje 2 body a vypočítává polohu plochy, které představuje (prohazuje
levou a pravou stranu, je-li to nutné)
Editor tyto nové třídy značně změnily. Hlavní odlišnost spočívá
v resize elementu. Poprvé je zde ukázkově vytvořen graf (jednoduché
elementy a vazby).
Dalším krokem bude naimplementovat definici elementů a vazeb, poté
editor této vlastnosti.
3. 2. 2008 (37,4KB)
Dnes byla upravena práce s vrstvami. Jednalo se o opravu
pořadí procházení seznamů a opravu některých rozhraní.
4. 2. 2008 (60,7KB)
Byl přidán zoom a editor vložen do JScrollPane. Návrh byl
rozšířen o třídy End a Anchor, které reprezentují konec vztahu a starají se o
polohu těsně na obdélníku.
5. 2. 2008 (73,1KB)
Vylepšen zoom (zaostření na střed). Přibyla detekce čáry (je bod
na čáře?). Upraven kontejner s elementy.
6. 2. 2008 (102KB)
EditorPane byl rozšířen, aby mohl pracovat s tzv.
dekoracemi. Jedná se o základní grafické prvky. Tím je nyní možné kreslit
elementy, resp. zakončení relace.
Z toho důvodu byla naimplementována třída PointBoxRelative,
která zajišťuje relativní souřadnice k nadřazenému obdélníku (např.
pracovní plocha).
7. 2. 2008 (102KB)
Editor nově obsahuje mnohonásobný výběr (dokončena implementace
ze 6.2.2008).
8. 2. 2008 (139KB)
Dnes byla nalezena knihovna, která bude v rámci aplikace
využita. Jedná se o FlexDock. Ta zaručí dynamické GUI. Spolu s ním,
vzhledem k potřebě navrhovat nové prvky GUI byl přidán i layoutmanager
TableLayout.
FlexDock podléhá licenci MIT, která vyžaduje uvedení řetězce o
jejím nasazení a proto bude v dialogu O Programu.
10. 2. 2008 (180KB)
V aplikaci se plně nasadil FlexDock. Vzniklo i první pomocné
okno – průzkumník vlastností. Ten zahrnuje tabulku obsahující všechny
vlastnosti zvoleného elementu. Vlastnosti zatím nejsou plně implementovány, ale
simulovány. Proto nemusí každý z elementů obsahovat všechny vlastnosti.
11. 2. 2008 (193KB)
Bylo přidáno další okno – průzkumník modelů. Ten má za úkol
zobrazovat hierarchii elementů. Hierarchie je generována na základě vzájemných
vztahů (je-li element součástí jiného)
12. 2. 2008 (231KB)
Dnešního dne byla přidána knihovna AKDockingLayout. Ta má stejné
licence jako FlexDock. Proto byl přidán do dialogového okna „O programu“ další
řetězec.
Aplikace nyní obsahuje nové toolbary. Jedná se o zoom a panel
dekorací. Dekorace se nyní tedy dají přidávat.
Bylo přidáno menu. Jedná se spíše o ilustrativní prvek (obsahuje
jen několik funkčních prvků).
13. 2. 2008 (258KB)
Do aplikace byla přidána nová dekorace. Jedná se o textové pole.
Proto bylo nutné dopsat Renderer a Editor pro novou zabalovací třídu FontBox
reprezentující font. Dále byla přidána nástrojová lišta pro editaci fontu.
Poslední změnou byly dvě tlačítka pro přibližování a oddalování
na nástrojové liště ZOOMu.
14. 2. 2008 (278KB)
Nové dvě dekorace:
-
DecorePoint (bod)
-
DecoreVector (vektor)
Obě jsou specifické pro editaci vzhledu. Jinde nebude možné je
použít a tak pro ně byla vytvořena nová nástrojová lišta.
Bod představuje místo, kde bude možné explicitně navazovat vztahy
(např. místo zakončení – viz grafický návrh). Vektor určuje defaultní směr. To
bude také určeno pro zakončení vztahu. Podle daného vektoru bude poté konkrétní
instance natáčena.
18. 2. 2008 (290KB)
Byl upraven JTabbedPane (editory a úvodní stránka). Nyní lze
uzavřít záložku pomocí tlačítka v tab. Volby přidat a vytvořit CASE
nástroj byli zprovozněny (zatím bez funkční části).
Dále přibyl hierarchický panel. Tím je nyní možné vytvářet
vícetextové elementy (viz dokumentace). Ke snadné navigaci bylo přidáno
dockovací okno.
20. 2. 2008 (317KB)
Do aplikace byl přidán strom reprezentující metamodel. To
přineslo nové grafické prvky do celé aplikace.
Jedná se o nový renderer stromů. Ten umožňuje přidávat
k textu ikonu a sjednocuje vzhled. K tomu bylo třeba vytvořit
dedikovanou třídu DefaultMutableTreeNodeExt zahrnující ikonu. Třída navíc
nabízí obsluhu výstupního textu (setText, getText resp. toString).
Pro ovládání aplikace pomocí kontextových menu byly přidány třídy
MenuContainerInterface a MenuContainer. Ty umožňují snadné svázání komponenty
s kontextovým menu, aniž by byla kontextová menu shodná pro všechny části
komponenty (např. řádky v JTree) a museli být vytvořeny dopředu. Jejich
vznik je maximálně zjednodušen a to především v oblasti struktury menu.
21. 2. 2008 (321KB)
Dnes byly poupraveny třídy metamodelu. Úpravy představují část
implementace a to především z pohledu propojení. Proto byl upraven i
průzkumník a doplněn o podstromy a kontextová menu.
22. 2. 2008 (327KB)
Doplněn strom metamodelu (struktura i kontextová menu). Nyní lze
přidávat elementy s designem a ten vytvářet. Panel nyní lze rozdělovat a
spojovat, resp. odstraňovat potomky.
23. 2. 2008 (328KB)
Doplněny a zprovozněny všechny vlastnosti u dekorací.
26. 2. 2008 (344KB)
Vytvořena třída End reprezentující zakončení vztahu a opravena
detekce obrysu (viz Anchor, nyní AnchorOnRect).
Tato třída využívá jako návrh zakončení třídu TreePanels. Proto
nyní po dokončení třídy RelationShip reprezentující spojnici a možnost
zalamování znamená i dokončení vztahu. Tím se projekt přesune k popisu
rolí a elementů. Po dosažení obsluhy vykreslování modelu bude projekt
pokračovat definicí metamodelu a následně jeho převodem do roviny modelu.
27. 2. 2008 (352KB)
Aplikace byla rozšířena o možnost přidávat kontextové menu
k prvkům v EditorPane. To se využívá jak pro určení vrstvy, tak i u
vztahů pro zalamování spoje.
Hlavní část dnešní práce představuje třída Relationship,
reprezentující vztah a Element zobrazující objekt.
Nyní jsou tedy implementovány všechny části pro kreslení schémat
a práce bude pokračovat na úrovni metamodelu.
Ve verzi 0.00.0029 (a některých následujících) je ukázka, kde je
možné upravit návrh jak zakončení vztahu tak i elementu a s nimi pracovat
v diagramu.
Byla objevena chyba při zmenšení elementu s aktivní vazbou
na nulové rozměry. Zřejmě třída AnchorOnRect neumí pracovat s nulovými
rozměry.
29. 2. 2008 (370KB)
Včerejší a dnešní práce na aplikaci byly zaměřeny
k vytváření relace a to především z grafického hlediska.
Přibyla proto možnost zobrazení designu relace. Jedná se pouze o
zvláštním způsobem zinicializovaný EditorPane a Diagram. Zde je možné relaci
sledovat a zalomovat spoje. Uživatel tedy nyní může vytvořit nový metamodel,
přidat vztah a u něj upravovat vlastnosti (design konců; tloušťku, barvu a styl
čár). Pro plnou podporu vytváření vztahů je nyní nutné umožnit volbu přichycení
a podporu metavlastností jako takových (skript versus definice typů). Při
testování byla objevena chyba spočívající ve špatném využití vektoru
v designu zakončení.
Přibyly defaultní hodnoty pro nepřiřazené konce (za pomoci
dedikované třídy PointBox).
Další změnou je dialogové okno pro úpravu hodnot vlastností a
metavlastností, resp. jejich datových tříd. Toto dialogové okno se objeví jen
na dobu nutnou k editaci a při posunu myši mimo okno samo zmizí.
Neobsahuje systémová tlačítka.
1. 3. 2008 (380KB)
Nové zabalovací třídy (BooleanBox, AnchorBox) rozšířily možnost
modelování a doplnily návrh vztahu.
Přibyly nové zabalovací třídy VectorBox a ElementAndRoleBox. Obě
dvě představují dynamické pole. Odlišnost je v tom, že VectorBox zahrnuje
jakékoliv proměnné typu PropertyData (tedy i VectorBox) a ElementAndRoleBox
obsahuje pouze MetaElement a MetaRole. Je možné zde určit, zda je možné
přidávat oba druhy nebo který, zda se jedná o třídu reprezentující předky (kontroluje
jednoznačnost dědění – cykly, násobné dědění).
Tím bylo docíleno plného popsání metamodelu z pohledu
nutných vlastností. Proto dalším krokem byl náhled na metaGraph. Ten
reprezentuje generalizaci meta-elementů a meta-rolí. Ukazuje jejich vlastnosti
a zobrazuje povolené vztahy incidující s nimi.
Náhled také zprostředkovává základní metody pomocí kontextových
menu.
Dalším cílem bude popis uživatelsky definovaných vlastností,
resp. jejich datových typů. Stěžejním bodem bude definice VectorBox a dodefinování
dalších potřebných typů dat (struktura, volba 1 z N). Tím bude metamodel
hotový a bude nutné naimplementovat zobrazení z metamodelu do modelu.
7. 3. 2008 (459KB)
Upraven metamodel a model pro snazší propojení. Veškeré typy
PropertyData byly vybaveny metodou copy pro klonování (včetně předchůdců).
Nově se v aplikaci objevila komponenta pro přidávání
elementů a relací do modelu (inspirována viz MS Visio).
Zdokonaleno automatické pojmenování objektů metamodelu.
10. 3. 2008 (476KB)
Vytvořen export metamodelu do xml za pomoci toString a připraven
import.
11. 3. 2008 (497KB)
Export metamodelu byl dokončen spolu s importem. Nyní je
tedy možné vytvořit metamodel (viz. welcome – vytvořit nový Case nástroj),
uložit pomocí průzkumníka metamodelu a následně načíst (viz. welcome – přidat
nový Case nástroj).
To značně ulehčí vývoj, protože nebude nutné vždy pro testování
nové části kreslit příklad.
Ukládání modelu bude velmi jednoduché, protože používá stejné
prvky (viz. PropertyData). Bude nutné dopsat cca 50 řádek a případně podpory
nových datových typů.
12. 3. 2008 (511KB)
Napsán import a export modelu. Modelovací vrstva byla připravena
pro zobrazení.
Další cíl bude vytvořit model a ten editovat v rámci
EditorPane.
13. 3. 2008 (542KB)
Dnes byla zfunkčněna vrstva modelu. Nyní je možné vytvořit
meta-case vrstvu a pomocí kontextového menu „vytvořit case“ v průzkumníku
metamodelu otevřít editor a v něm editovat schéma.
Proto přibyl i další průzkumník (modelu). Téměř i funguje
import/export modelu. V další etapě je nutné uložit s modelem i
vlastnosti definující parametry vzhledu (pozice přichycení, průběh vztahů,
poloha elementů, resp. upravit třídy Relationship, RelationshipLine a Element
v package metacase.core.gui.editor).
Nově je možné vztah odpojit a následně připojit. Editor modelu
také maže spolu s elementem všechny připojené vztahy.
Od dnešní verze (0.00.0041) nebudou v základním okně načtené
příklady, ale budou přiloženy v xml podobě (example.xml pro metamodel a
poté schema.xml pro model).
14. 3. 2008 (548KB)
Dokončeno načítání a ukládání modelů. Nově lze v modelu
používat i dekorace (grafické elementy bez významu vzhledem k modelu.
15. 3. 2008 (556KB)
Částečně implementován seznam metamodelů na úvodní stránce a
opravena práce s vlastnostmi.
16. 3. 2008 (575KB)
Dokončená implementace úvodní stránky. Kromě informačních boxů je
vše kompletní. Chybí zde jednotlivé zprávy (soubory html v adresáři data)
a komponenty zprostředkovávající zpětnou vazbu.
17. 3. 2008 (620KB)
Projekt byl rozšířen o package metacase.core.framework.script.
Zároveň byla implmentována základní část package (lexikální analyzátor a editor
s obarvením). Do meta-modelu byla dodefinována povinná vlastnost code a
zfunkčena volba v kontextovém menu zobrazující editor.
Zdrojový kód je uložen pomocí StringBox a proto je jeho
vypovídající schopnost omezena (viz. neimplementované escape znaky)
18. 3. 2008 (641KB)
Dnes byla implementována zpětná vazba (viz. úvodní stránka) a
třídy reprezentující proměnné ve skriptu (Variable). Dále byl poopraven lexikální
analyzátor včetně tokenů a napsána část gramatiky.
19. 3. 2008 (679KB)
Dokončena a částečně implementována gramatika. Nyní je hotov
sémantický překlad výrazů a definice proměnných a konstant. Tokeny, na kterých
došlo při překladu k chybě, jsou zvýrazněny.
20. 3. 2008 (708KB)
Naimplementována celá gramatika, včetně podpory pro přístup
k proměnným a funkcím objektů. Nativně naimplementovány metody
dokument.write a document.writeln.
Pro dokončení skriptovacího jazyka je nutné opravit gramatiku pro
levou prioritu, naimplementovat eval a zprovoznit rekurzy.
21. 3. 2008 (740KB)
Dnes byli naimplementány základní nativně metody (parseInt,
parseFloat, alert, prompt, confirm, isNaN, isFinite) a object Math.
Do aplikace přibyl nový toolbar (start a stop skriptu) a konzole.
Ty budou sloužit k otestování skriptu.
22. 3. 2008 (748KB)
Byla opravena gramatika (levá asociace na pravou). String byl
obohacen o většinu funkcí (dle výběru – viz potřebnost). Dále byl opraven
přístup k metodám a proměnným skrze var.
Do gramatiky byly dopsány nové zatím neimplementovaná pravidla
(new, operátor . – viz přístup k proměnným a metodám od literálů a metod)
27. 3. 2008 (799KB)
Metaproperty byla rozšířena o skript a podmínky spuštění. Dále
přibyl i posluchač podmínek, který se stará o spouštění skriptů. Metaproperty
se objevují v novém okně v dočasné podobě (řádek je příliš vysoký), který
bude nutné na konci zjednodušit.
28. 3. 2008 (806KB)
Upraveno klíčové slovo this a opraveno načítání a ukládání (viz
adresář).
1. 4. 2008 (832KB)
Dnes byl poprvé propojen skript s grafickou částí. Proto je
možné definovat název třídy, text popisky a název package v ukázce.
Hodnota skriptu v meta-vlastnosti se chová obdobně jako tělo funkce
(vyhodnocuje se return). Klíčové slovo this označuje graph, element nebo
relationship, v rámci které byl volán skript. Pro hodnoty, které jsou
závislé na instanci je nutné tento skript uvádět s podmínkou spuštění před
čtením. Před testováním návrhu je nyní nutné metamodel znovu načíst (uložit,
zavřít a poté načíst).
K tomu bylo potřeba vytvořit dialogové okno definující typ
dat (zatím se jedná pouze o jednoduché typy – složitější (vektor, záznam a
volba 1zN) bude nutné dopsat.
2. 4. 2008 (859KB)
Dokončena implementace složitějších datových typů včetně jejich
nastavování. Nyní je potřeba poopravit editor a renderer pro VectorBox. Pro
RecordBox zatím neexistují a pro je nutné je vytvořit. Další cíl bude
zprovoznit element třídy, tzn. zprovoznit skript pracující na základě složených
datových typů, který je již připraven v příkladu.
3. 4. 2008 (884KB)
Plně propojena grafická část a skript (viz ukázka – třída).
Začala implementace undo-redo.
4. 4. 2008 (905KB)
Zprovozněno undo-redo a vytvořen první export (obrázky png, gif,
bmp a jpeg).
Pro snadnější přístup k souborům byl obalen JChooser a
vytvořena třída JChooserDialog.
5. 4. 2008 (912KB)
Přidáno ovládání panelů nástrojů a některé základní funkce do
menu.
6. 4. 2008 (920KB)
Kompletní správa panelu nástrojů a flexdocku.
7. 4. 2008 (925KB)
Při odstranění metamodelu nebo modelu se nyní automaticky
odstraní z paměti i závislé objekty včetně editorů.
Nově se změní titulky u záložek při změně jména, zobrazí záložka
při vytvoření a otevře se záložka při vytvoření modelu.
Do konzole byl přidán nový panel nástrojů (uložit, smazat
konzoly).
Při vytvoření modelu se automaticky provede skript (viz výpočet
fakt(5) v příkladu).
Z aplikace byly smazány původní ukázky editoru a byl
zjednodušen průzkumník metamodelu. Proto je přírůstek kódu dnes malý.
8. 4. 2008 (945KB)
Aplikace byla rozšířena o tisk a náhled. Nově jsou blokovány
nabídky v menu, které nejsou aktivní.
9. 4. 2008 (965KB)
Dopsáno menu vložit-dekorace a vytvořen nový panel nástrojů
(uložit, načíst, tisk apod.)
10. 4. 2008 (1004KB)
Dopsány přiřazovací příkazy s operací (např. +=,
>>>= …), pravítka u editoru, funkce graphu (získání elementů ad.).
S tím je spjat i nový typ – pole (ArrayVariable).
K tomu bylo nutné rozšířit jak skript (lexikální i
sémantickou analýzu), tak i dodefinovat hashCode a equals pro ostatní typy. Je
částečně naimplementováno vytvoření objektu (zatím nefunguje getter pro this
uvnitř funkce).
11. 4. 2008 (1027KB)
Dnes přibyla poslední část syntaxe (plánovaná část OOP,
try-catch-finally, throw) a objekty FileWriter a FileReader.
FileWriter ani FileReader nejsou součástí javascriptu a pro
zjednodušení nejsou ani podle Javy.
Dále byl opraven literál null.
13. 4. 2008 (1050KB)
V aplikaci byly dokončovány detaily. V grafické části se
jednalo o náhled na vkládaný prvek (dekoraci, relaci a element).
V oblasti skriptu došlo k odstranění deprecated funkce
Thread.stop. Tím je část skriptu připravena i ke krokování (debugging ale není
součástí plánované aplikace). Zároveň byly dopsány všechny předdefinované
funkce (vztah).
Na úrovni modelu bylo zfunkčněno ukládání (metamodely se ukládají
automaticky, modely na základě dialogového okna). To znamenalo naimplementovat
i závislost prvků vektorů. Dojde-li ke změně prvku, hlásí i vektor, ve kterém
se nachází, změnu. Metavlastnosti byly také pozměněny. Nyní neobsahuje pouze 1
skript, ale tři, pro každou událost zvlášť. Díky tomu je možné využívat
události nezávisle a uložený metamodel se zmenšil. Zároveň byl změněn renderer
(využívá JTabbedPane).
14. 4. 2008 (1072KB)
Dokončen UndoManager. Nyní spravuje i přidávání a odebírání
elementů. Dále byla opravena práce s Dragery a konci vztahů. U editoru
kódu se používá standardní UndoManager ze swing.
Model nyní bere v úvahu dědičnost.
Tlačítka copy, cut a paste jsou nyní aktivní (pouze pro editor
kódu).
15. 4. 2008 (1103KB)
Dokončena implementace. Dnešní činnost představovala implementaci
podpory kontextových menu (zakončení vztahu, vztah a element), exportu a
importu.
Nově je možné v aplikaci snadno zaměňovat druhy vztahů.
Průzkumník pro vkládání elementů a relací byl rozšířen o záložky podle rolí.
Bylo opraveno vykreslování modelů (resp. this).
Nyní bude následovat komentování kódu (tím vznikne okomentovaná
verze 0.02.0081) a dále bude práce zaměřena na dokumentaci.
Projekt byl okomentován a promazán od zbytečných (nahrazených
tříd). Dále byl upraven manifest.
Nyní bude práce zaměřena na dokumentaci.
29. 4. 2008 (1223KB)
Přidáno načítání a ukládání vzhledu. Přidá CASE nástroj UML
use-case.
17. 4. 2008 (1233KB)
Opravena funkce getter, pole a new. Vytvořen CASE nástroj
ER-model (chainův) včetně základu exportu.
Zlepšena správa souborů (viz načítání již načteného).