metaCASE
poslední verze
0.02.0089
Deník metaCASE

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.

 

6. 3. 2008 (441KB)

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.

 

17. 4. 2008 (1215KB)

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).

created by REE-systems