by Tomáš Bräuer » Thu 18. Oct 2018 7:39:38
Dobrý den,
není mi zcela jasné, co se snažíte dosáhnout, nicméně váš kód určitě nemůže fungovat, protože selže na funkci CloseView, kterou voláte bez povinného parametru.
Pokud potřebujete změnit rozložení pracovní plochy, aby občas měla jedno rozložení a jindy rozložení jiné, potom zavření workspace a otevření jiného by mohla být správná cesta. Ale hlavní worspace aplikace nejde zavřít, protože jeho zavřením se zastaví aplikace. Takže zavřít musíte workspace, který není hlavním oknem aplikace.
Pokud je to druhý workspace na druhém monitoru, tak to jde udělat tak, že se mu prostě nenahodí příznak hlavní okno aplikace.
Pokud je to ale na hlavním monitoru, pak vám nezbude než mít formálně hlavní workspace jako hlavní ono aplikace, v něm si udělejte jediny rámec např s identifikátorem wsmain přes celou plochu. A v tomto rámci nazvaném wsmain budete střídavě mít otevřený jeden ze dvou dalších workspace představující různé rozložení obrazovky. Pomocný workspace otevřete příkazem OpenView a uvedete "target:wsmain;" . Oba pomocné worspace by měly obsahovat rámec nazvaný main, do kterého se vám budou otevírat okna aplikace plus váš rámec pro menu.
CloseView nemusíte vůbec volat, protože otevřením vnořeného workspace v rámci wsmain, dojde automaticky k zavření stávajícího worspace, který tam v té chvíli je otevřený.
Struktura obou přepínaných workspace může být stejná (jenom různé rozložení rámců) nebo se i může lišit z hlediska obsažených rámců.