diff --git a/modeling/AVATAR/AirbusDoor.xml b/modeling/AVATAR/AirbusDoor.xml index d7beb2e4f7a2a6716524e9ae4970229125b3db41..cb969542a581c6eee87c22b729ba658f48163c4d 100644 --- a/modeling/AVATAR/AirbusDoor.xml +++ b/modeling/AVATAR/AirbusDoor.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="ISO-8859-1"?> +<?xml version="1.0" encoding="UTF-8"?> <TURTLEGMODELING version="1.0beta"> @@ -3960,8 +3960,8 @@ <sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> <infoparam name="connector" value="null" /> <TGConnectingPoint num="0" id="2011" /> -<P1 x="787" y="437" id="2288" /> -<P2 x="658" y="595" id="2218" /> +<P1 x="787" y="437" id="2122" /> +<P2 x="658" y="595" id="2138" /> <AutomaticDrawing data="true" /> </CONNECTOR><SUBCOMPONENT type="-1" id="2010" > <father id="2012" num="0" /> @@ -3989,8 +3989,8 @@ <sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> <infoparam name="connector" value="null" /> <TGConnectingPoint num="0" id="2018" /> -<P1 x="837" y="437" id="2290" /> -<P2 x="892" y="587" id="2193" /> +<P1 x="837" y="437" id="2124" /> +<P2 x="892" y="587" id="2195" /> <AutomaticDrawing data="true" /> </CONNECTOR><SUBCOMPONENT type="-1" id="2017" > <father id="2019" num="0" /> @@ -4018,8 +4018,8 @@ <sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> <infoparam name="connector" value="null" /> <TGConnectingPoint num="0" id="2025" /> -<P1 x="875" y="424" id="2273" /> -<P2 x="988" y="469" id="2136" /> +<P1 x="875" y="424" id="2107" /> +<P2 x="988" y="469" id="2220" /> <AutomaticDrawing data="true" /> </CONNECTOR><SUBCOMPONENT type="-1" id="2024" > <father id="2026" num="0" /> @@ -4047,8 +4047,8 @@ <sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> <infoparam name="connector" value="null" /> <TGConnectingPoint num="0" id="2032" /> -<P1 x="775" y="412" id="2263" /> -<P2 x="618" y="455" id="2095" /> +<P1 x="775" y="412" id="2097" /> +<P2 x="618" y="455" id="2261" /> <AutomaticDrawing data="true" /> </CONNECTOR><SUBCOMPONENT type="-1" id="2031" > <father id="2033" num="0" /> @@ -4076,8 +4076,8 @@ <sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> <infoparam name="connector" value="null" /> <TGConnectingPoint num="0" id="2039" /> -<P1 x="836" y="345" id="2258" /> -<P2 x="825" y="387" id="2261" /> +<P1 x="836" y="345" id="2135" /> +<P2 x="825" y="387" id="2095" /> <AutomaticDrawing data="true" /> </CONNECTOR><SUBCOMPONENT type="-1" id="2038" > <father id="2040" num="0" /> @@ -4261,11 +4261,11 @@ </COMPONENT> <SUBCOMPONENT type="5106" id="2134" > <father id="2341" num="0" /> -<cdparam x="568" y="455" /> +<cdparam x="775" y="387" /> <sizeparam width="100" height="50" minWidth="40" minHeight="30" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> <hidden value="false" /> <cdrectangleparam minX="0" maxX="541" minY="0" maxY="391" /> -<infoparam name="state0" value="IDLE" /> +<infoparam name="state0" value="Test" /> <TGConnectingPoint num="0" id="2094" /> <TGConnectingPoint num="1" id="2095" /> <TGConnectingPoint num="2" id="2096" /> @@ -4309,172 +4309,172 @@ <extraparam> </extraparam> </SUBCOMPONENT> -<SUBCOMPONENT type="5106" id="2175" > +<SUBCOMPONENT type="5100" id="2136" > <father id="2341" num="1" /> -<cdparam x="938" y="469" /> -<sizeparam width="100" height="50" minWidth="40" minHeight="30" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<cdparam x="829" y="325" /> +<sizeparam width="15" height="15" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> <hidden value="false" /> -<cdrectangleparam minX="0" maxX="541" minY="0" maxY="391" /> -<infoparam name="state0" value="FAULT" /> +<cdrectangleparam minX="0" maxX="626" minY="0" maxY="426" /> +<infoparam name="start state" value="null" /> <TGConnectingPoint num="0" id="2135" /> -<TGConnectingPoint num="1" id="2136" /> -<TGConnectingPoint num="2" id="2137" /> -<TGConnectingPoint num="3" id="2138" /> -<TGConnectingPoint num="4" id="2139" /> -<TGConnectingPoint num="5" id="2140" /> -<TGConnectingPoint num="6" id="2141" /> -<TGConnectingPoint num="7" id="2142" /> -<TGConnectingPoint num="8" id="2143" /> -<TGConnectingPoint num="9" id="2144" /> -<TGConnectingPoint num="10" id="2145" /> -<TGConnectingPoint num="11" id="2146" /> -<TGConnectingPoint num="12" id="2147" /> -<TGConnectingPoint num="13" id="2148" /> -<TGConnectingPoint num="14" id="2149" /> -<TGConnectingPoint num="15" id="2150" /> -<TGConnectingPoint num="16" id="2151" /> -<TGConnectingPoint num="17" id="2152" /> -<TGConnectingPoint num="18" id="2153" /> -<TGConnectingPoint num="19" id="2154" /> -<TGConnectingPoint num="20" id="2155" /> -<TGConnectingPoint num="21" id="2156" /> -<TGConnectingPoint num="22" id="2157" /> -<TGConnectingPoint num="23" id="2158" /> -<TGConnectingPoint num="24" id="2159" /> -<TGConnectingPoint num="25" id="2160" /> -<TGConnectingPoint num="26" id="2161" /> -<TGConnectingPoint num="27" id="2162" /> -<TGConnectingPoint num="28" id="2163" /> -<TGConnectingPoint num="29" id="2164" /> -<TGConnectingPoint num="30" id="2165" /> -<TGConnectingPoint num="31" id="2166" /> -<TGConnectingPoint num="32" id="2167" /> -<TGConnectingPoint num="33" id="2168" /> -<TGConnectingPoint num="34" id="2169" /> -<TGConnectingPoint num="35" id="2170" /> -<TGConnectingPoint num="36" id="2171" /> -<TGConnectingPoint num="37" id="2172" /> -<TGConnectingPoint num="38" id="2173" /> -<TGConnectingPoint num="39" id="2174" /> -<extraparam> -</extraparam> -</SUBCOMPONENT> -<SUBCOMPONENT type="5106" id="2216" > +</SUBCOMPONENT> +<SUBCOMPONENT type="5106" id="2177" > <father id="2341" num="2" /> -<cdparam x="855" y="587" /> -<sizeparam width="100" height="50" minWidth="40" minHeight="30" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> -<hidden value="false" /> -<cdrectangleparam minX="0" maxX="541" minY="0" maxY="391" /> -<infoparam name="state0" value="OPEN" /> -<TGConnectingPoint num="0" id="2176" /> -<TGConnectingPoint num="1" id="2177" /> -<TGConnectingPoint num="2" id="2178" /> -<TGConnectingPoint num="3" id="2179" /> -<TGConnectingPoint num="4" id="2180" /> -<TGConnectingPoint num="5" id="2181" /> -<TGConnectingPoint num="6" id="2182" /> -<TGConnectingPoint num="7" id="2183" /> -<TGConnectingPoint num="8" id="2184" /> -<TGConnectingPoint num="9" id="2185" /> -<TGConnectingPoint num="10" id="2186" /> -<TGConnectingPoint num="11" id="2187" /> -<TGConnectingPoint num="12" id="2188" /> -<TGConnectingPoint num="13" id="2189" /> -<TGConnectingPoint num="14" id="2190" /> -<TGConnectingPoint num="15" id="2191" /> -<TGConnectingPoint num="16" id="2192" /> -<TGConnectingPoint num="17" id="2193" /> -<TGConnectingPoint num="18" id="2194" /> -<TGConnectingPoint num="19" id="2195" /> -<TGConnectingPoint num="20" id="2196" /> -<TGConnectingPoint num="21" id="2197" /> -<TGConnectingPoint num="22" id="2198" /> -<TGConnectingPoint num="23" id="2199" /> -<TGConnectingPoint num="24" id="2200" /> -<TGConnectingPoint num="25" id="2201" /> -<TGConnectingPoint num="26" id="2202" /> -<TGConnectingPoint num="27" id="2203" /> -<TGConnectingPoint num="28" id="2204" /> -<TGConnectingPoint num="29" id="2205" /> -<TGConnectingPoint num="30" id="2206" /> -<TGConnectingPoint num="31" id="2207" /> -<TGConnectingPoint num="32" id="2208" /> -<TGConnectingPoint num="33" id="2209" /> -<TGConnectingPoint num="34" id="2210" /> -<TGConnectingPoint num="35" id="2211" /> -<TGConnectingPoint num="36" id="2212" /> -<TGConnectingPoint num="37" id="2213" /> -<TGConnectingPoint num="38" id="2214" /> -<TGConnectingPoint num="39" id="2215" /> -<extraparam> -</extraparam> -</SUBCOMPONENT> -<SUBCOMPONENT type="5106" id="2257" > -<father id="2341" num="3" /> <cdparam x="559" y="595" /> <sizeparam width="198" height="50" minWidth="40" minHeight="30" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> <hidden value="false" /> <cdrectangleparam minX="0" maxX="443" minY="0" maxY="391" /> <infoparam name="state0" value="FAULT_AND_OPEN" /> -<TGConnectingPoint num="0" id="2217" /> -<TGConnectingPoint num="1" id="2218" /> -<TGConnectingPoint num="2" id="2219" /> -<TGConnectingPoint num="3" id="2220" /> -<TGConnectingPoint num="4" id="2221" /> -<TGConnectingPoint num="5" id="2222" /> -<TGConnectingPoint num="6" id="2223" /> -<TGConnectingPoint num="7" id="2224" /> -<TGConnectingPoint num="8" id="2225" /> -<TGConnectingPoint num="9" id="2226" /> -<TGConnectingPoint num="10" id="2227" /> -<TGConnectingPoint num="11" id="2228" /> -<TGConnectingPoint num="12" id="2229" /> -<TGConnectingPoint num="13" id="2230" /> -<TGConnectingPoint num="14" id="2231" /> -<TGConnectingPoint num="15" id="2232" /> -<TGConnectingPoint num="16" id="2233" /> -<TGConnectingPoint num="17" id="2234" /> -<TGConnectingPoint num="18" id="2235" /> -<TGConnectingPoint num="19" id="2236" /> -<TGConnectingPoint num="20" id="2237" /> -<TGConnectingPoint num="21" id="2238" /> -<TGConnectingPoint num="22" id="2239" /> -<TGConnectingPoint num="23" id="2240" /> -<TGConnectingPoint num="24" id="2241" /> -<TGConnectingPoint num="25" id="2242" /> -<TGConnectingPoint num="26" id="2243" /> -<TGConnectingPoint num="27" id="2244" /> -<TGConnectingPoint num="28" id="2245" /> -<TGConnectingPoint num="29" id="2246" /> -<TGConnectingPoint num="30" id="2247" /> -<TGConnectingPoint num="31" id="2248" /> -<TGConnectingPoint num="32" id="2249" /> -<TGConnectingPoint num="33" id="2250" /> -<TGConnectingPoint num="34" id="2251" /> -<TGConnectingPoint num="35" id="2252" /> -<TGConnectingPoint num="36" id="2253" /> -<TGConnectingPoint num="37" id="2254" /> -<TGConnectingPoint num="38" id="2255" /> -<TGConnectingPoint num="39" id="2256" /> -<extraparam> -</extraparam> -</SUBCOMPONENT> -<SUBCOMPONENT type="5100" id="2259" > +<TGConnectingPoint num="0" id="2137" /> +<TGConnectingPoint num="1" id="2138" /> +<TGConnectingPoint num="2" id="2139" /> +<TGConnectingPoint num="3" id="2140" /> +<TGConnectingPoint num="4" id="2141" /> +<TGConnectingPoint num="5" id="2142" /> +<TGConnectingPoint num="6" id="2143" /> +<TGConnectingPoint num="7" id="2144" /> +<TGConnectingPoint num="8" id="2145" /> +<TGConnectingPoint num="9" id="2146" /> +<TGConnectingPoint num="10" id="2147" /> +<TGConnectingPoint num="11" id="2148" /> +<TGConnectingPoint num="12" id="2149" /> +<TGConnectingPoint num="13" id="2150" /> +<TGConnectingPoint num="14" id="2151" /> +<TGConnectingPoint num="15" id="2152" /> +<TGConnectingPoint num="16" id="2153" /> +<TGConnectingPoint num="17" id="2154" /> +<TGConnectingPoint num="18" id="2155" /> +<TGConnectingPoint num="19" id="2156" /> +<TGConnectingPoint num="20" id="2157" /> +<TGConnectingPoint num="21" id="2158" /> +<TGConnectingPoint num="22" id="2159" /> +<TGConnectingPoint num="23" id="2160" /> +<TGConnectingPoint num="24" id="2161" /> +<TGConnectingPoint num="25" id="2162" /> +<TGConnectingPoint num="26" id="2163" /> +<TGConnectingPoint num="27" id="2164" /> +<TGConnectingPoint num="28" id="2165" /> +<TGConnectingPoint num="29" id="2166" /> +<TGConnectingPoint num="30" id="2167" /> +<TGConnectingPoint num="31" id="2168" /> +<TGConnectingPoint num="32" id="2169" /> +<TGConnectingPoint num="33" id="2170" /> +<TGConnectingPoint num="34" id="2171" /> +<TGConnectingPoint num="35" id="2172" /> +<TGConnectingPoint num="36" id="2173" /> +<TGConnectingPoint num="37" id="2174" /> +<TGConnectingPoint num="38" id="2175" /> +<TGConnectingPoint num="39" id="2176" /> +<extraparam> +</extraparam> +</SUBCOMPONENT> +<SUBCOMPONENT type="5106" id="2218" > +<father id="2341" num="3" /> +<cdparam x="855" y="587" /> +<sizeparam width="100" height="50" minWidth="40" minHeight="30" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<hidden value="false" /> +<cdrectangleparam minX="0" maxX="541" minY="0" maxY="391" /> +<infoparam name="state0" value="OPEN" /> +<TGConnectingPoint num="0" id="2178" /> +<TGConnectingPoint num="1" id="2179" /> +<TGConnectingPoint num="2" id="2180" /> +<TGConnectingPoint num="3" id="2181" /> +<TGConnectingPoint num="4" id="2182" /> +<TGConnectingPoint num="5" id="2183" /> +<TGConnectingPoint num="6" id="2184" /> +<TGConnectingPoint num="7" id="2185" /> +<TGConnectingPoint num="8" id="2186" /> +<TGConnectingPoint num="9" id="2187" /> +<TGConnectingPoint num="10" id="2188" /> +<TGConnectingPoint num="11" id="2189" /> +<TGConnectingPoint num="12" id="2190" /> +<TGConnectingPoint num="13" id="2191" /> +<TGConnectingPoint num="14" id="2192" /> +<TGConnectingPoint num="15" id="2193" /> +<TGConnectingPoint num="16" id="2194" /> +<TGConnectingPoint num="17" id="2195" /> +<TGConnectingPoint num="18" id="2196" /> +<TGConnectingPoint num="19" id="2197" /> +<TGConnectingPoint num="20" id="2198" /> +<TGConnectingPoint num="21" id="2199" /> +<TGConnectingPoint num="22" id="2200" /> +<TGConnectingPoint num="23" id="2201" /> +<TGConnectingPoint num="24" id="2202" /> +<TGConnectingPoint num="25" id="2203" /> +<TGConnectingPoint num="26" id="2204" /> +<TGConnectingPoint num="27" id="2205" /> +<TGConnectingPoint num="28" id="2206" /> +<TGConnectingPoint num="29" id="2207" /> +<TGConnectingPoint num="30" id="2208" /> +<TGConnectingPoint num="31" id="2209" /> +<TGConnectingPoint num="32" id="2210" /> +<TGConnectingPoint num="33" id="2211" /> +<TGConnectingPoint num="34" id="2212" /> +<TGConnectingPoint num="35" id="2213" /> +<TGConnectingPoint num="36" id="2214" /> +<TGConnectingPoint num="37" id="2215" /> +<TGConnectingPoint num="38" id="2216" /> +<TGConnectingPoint num="39" id="2217" /> +<extraparam> +</extraparam> +</SUBCOMPONENT> +<SUBCOMPONENT type="5106" id="2259" > <father id="2341" num="4" /> -<cdparam x="829" y="325" /> -<sizeparam width="15" height="15" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> +<cdparam x="938" y="469" /> +<sizeparam width="100" height="50" minWidth="40" minHeight="30" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> <hidden value="false" /> -<cdrectangleparam minX="0" maxX="626" minY="0" maxY="426" /> -<infoparam name="start state" value="null" /> -<TGConnectingPoint num="0" id="2258" /> +<cdrectangleparam minX="0" maxX="541" minY="0" maxY="391" /> +<infoparam name="state0" value="FAULT" /> +<TGConnectingPoint num="0" id="2219" /> +<TGConnectingPoint num="1" id="2220" /> +<TGConnectingPoint num="2" id="2221" /> +<TGConnectingPoint num="3" id="2222" /> +<TGConnectingPoint num="4" id="2223" /> +<TGConnectingPoint num="5" id="2224" /> +<TGConnectingPoint num="6" id="2225" /> +<TGConnectingPoint num="7" id="2226" /> +<TGConnectingPoint num="8" id="2227" /> +<TGConnectingPoint num="9" id="2228" /> +<TGConnectingPoint num="10" id="2229" /> +<TGConnectingPoint num="11" id="2230" /> +<TGConnectingPoint num="12" id="2231" /> +<TGConnectingPoint num="13" id="2232" /> +<TGConnectingPoint num="14" id="2233" /> +<TGConnectingPoint num="15" id="2234" /> +<TGConnectingPoint num="16" id="2235" /> +<TGConnectingPoint num="17" id="2236" /> +<TGConnectingPoint num="18" id="2237" /> +<TGConnectingPoint num="19" id="2238" /> +<TGConnectingPoint num="20" id="2239" /> +<TGConnectingPoint num="21" id="2240" /> +<TGConnectingPoint num="22" id="2241" /> +<TGConnectingPoint num="23" id="2242" /> +<TGConnectingPoint num="24" id="2243" /> +<TGConnectingPoint num="25" id="2244" /> +<TGConnectingPoint num="26" id="2245" /> +<TGConnectingPoint num="27" id="2246" /> +<TGConnectingPoint num="28" id="2247" /> +<TGConnectingPoint num="29" id="2248" /> +<TGConnectingPoint num="30" id="2249" /> +<TGConnectingPoint num="31" id="2250" /> +<TGConnectingPoint num="32" id="2251" /> +<TGConnectingPoint num="33" id="2252" /> +<TGConnectingPoint num="34" id="2253" /> +<TGConnectingPoint num="35" id="2254" /> +<TGConnectingPoint num="36" id="2255" /> +<TGConnectingPoint num="37" id="2256" /> +<TGConnectingPoint num="38" id="2257" /> +<TGConnectingPoint num="39" id="2258" /> +<extraparam> +</extraparam> </SUBCOMPONENT> <SUBCOMPONENT type="5106" id="2300" > <father id="2341" num="5" /> -<cdparam x="775" y="387" /> +<cdparam x="568" y="455" /> <sizeparam width="100" height="50" minWidth="40" minHeight="30" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" /> <hidden value="false" /> <cdrectangleparam minX="0" maxX="541" minY="0" maxY="391" /> -<infoparam name="state0" value="Test" /> +<infoparam name="state0" value="IDLE" /> <TGConnectingPoint num="0" id="2260" /> <TGConnectingPoint num="1" id="2261" /> <TGConnectingPoint num="2" id="2262" /> diff --git a/src/main/java/common/ConfigurationTTool.java b/src/main/java/common/ConfigurationTTool.java index aadfb8ad8f46f98e75aa0fd16b1177a04c3b7092..c847acf7ceab961d46d8225b8437ffa31ac1dc12 100755 --- a/src/main/java/common/ConfigurationTTool.java +++ b/src/main/java/common/ConfigurationTTool.java @@ -164,6 +164,8 @@ public class ConfigurationTTool { public static String LastOpenFile = ""; public static boolean LastOpenFileDefined = false; + public static int NB_LAST_OPEN_FILE = 10; + public static String [] LastOpenFiles = new String[NB_LAST_OPEN_FILE]; public static String LastWindowAttributesX = "", LastWindowAttributesY = ""; public static String LastWindowAttributesWidth = "", LastWindowAttributesHeight = ""; @@ -223,7 +225,25 @@ public class ConfigurationTTool { } - index0 = data.indexOf("LastOpenFile"); + + while ( (index0 = data.indexOf("<LastOpenFile")) != -1) { + index1 = data.indexOf("/>", index0+1); + if (index1 == -1) { + break; // pb in the configuration? + } + data = data.substring(0, index0) + data.substring(index1+2, data.length()); + } + + index0 = data.indexOf("</TURTLECONFIGURATION>"); + String toBeAdded = ""; + // Adding configuration there + for(int i=0; i<LastOpenFiles.length; i++) { + String file = LastOpenFiles[i]; + if ((file != null) && (file.length() > 0)) { + toBeAdded = toBeAdded + "<LastOpenFile data=\"" + file + "\" />\n"; + } + } + data = data.substring(0, index0-1) + toBeAdded + data.substring(index0, data.length()); //sb.append("data = " + data + " ConfigurationTTool.LastOpenFile=" + ConfigurationTTool.LastOpenFile); @@ -493,7 +513,14 @@ public class ConfigurationTTool { sb.append("ExternalCommand2: " + ExternalCommand2 + "\n"); sb.append("\nInformation saved by TTool:\n"); - sb.append("LastOpenFile: " + LastOpenFile + "\n"); + + if (LastOpenFiles != null) { + for(int i=0; i<LastOpenFiles.length; i++) { + if (LastOpenFiles[i] != null) { + sb.append("LastOpenFile #" + i + ": " + LastOpenFiles[i] + "\n"); + } + } + } sb.append("LastWindowAttributesX: " + LastWindowAttributesX + "\n"); sb.append("LastWindowAttributesY: " + LastWindowAttributesY + "\n"); sb.append("LastWindowAttributesWidth: ").append(LastWindowAttributesWidth).append("\n"); @@ -795,6 +822,10 @@ public class ConfigurationTTool { if (nl.getLength() > 0) URLModel(nl); + + for(int i=0;i<NB_LAST_OPEN_FILE; i++) { + LastOpenFiles[i] = ""; + } nl = doc.getElementsByTagName("LastOpenFile"); if (nl.getLength() > 0) LastOpenFile(nl); @@ -1558,9 +1589,14 @@ public class ConfigurationTTool { private static void LastOpenFile(NodeList nl) throws MalformedConfigurationException { try { - Element elt = (Element) (nl.item(0)); - LastOpenFile = elt.getAttribute("data"); - LastOpenFileDefined = true; + for(int i=0; i<Math.min(nl.getLength(), NB_LAST_OPEN_FILE); i++) { + Element elt = (Element) (nl.item(i)); + if (i == 0) { + LastOpenFile = elt.getAttribute("data"); + LastOpenFileDefined = true; + } + LastOpenFiles[i] = elt.getAttribute("data"); + } } catch (Exception e) { throw new MalformedConfigurationException(e.getMessage()); } @@ -1603,4 +1639,29 @@ public class ConfigurationTTool { return ((s != null) && (s.trim().length() > 0)); } + public static void decLastFiles() { + String[] tmp = new String[NB_LAST_OPEN_FILE]; + String[] tmp1 = new String[NB_LAST_OPEN_FILE]; + for(int i=0; i<NB_LAST_OPEN_FILE; i++) { + tmp[i] = LastOpenFiles[i]; + } + + for (int j=0;j<NB_LAST_OPEN_FILE; j++) { + tmp1[j] = ""; + LastOpenFiles[j] = ""; + } + + int cpt = 0; + for(int k=0; k<NB_LAST_OPEN_FILE; k++) { + if (tmp[k].length() > 0) { + tmp1[cpt] = tmp[k]; + cpt ++; + } + } + + for(int l=NB_LAST_OPEN_FILE-1; l>0; l--) { + LastOpenFiles[l] = tmp1[l-1]; + } + } + } // diff --git a/src/main/java/ui/ActionPerformer.java b/src/main/java/ui/ActionPerformer.java index 6f318d57277391fc51c4084ebb7b439ded20787c..e9c1902c1b0147b80e53b12aafa1dc9e8565b422 100755 --- a/src/main/java/ui/ActionPerformer.java +++ b/src/main/java/ui/ActionPerformer.java @@ -1063,6 +1063,15 @@ public class ActionPerformer { JOptionPane.showMessageDialog(mgui.getFrame(), "In Port: Color CYAN\nOut Port: Color LIGHT GRAY", "Help color of the ports", JOptionPane.INFORMATION_MESSAGE); } else if (command.endsWith(".dot")) { mgui.viewAutomata(command); + + // Last open + } else { + for(int i=0; i<mgui.actionsLast.length; i++) { + if (command.equals(mgui.actionsLast[i].getActionCommand())) { + mgui.openLastProject(i); + break; + } + } } } } diff --git a/src/main/java/ui/JMenuBarTurtle.java b/src/main/java/ui/JMenuBarTurtle.java index 14c526c4273a7c7616479b986699cf951303f04d..abebd2d2825b16403d04a3c5ac1f6b884bcacb68 100755 --- a/src/main/java/ui/JMenuBarTurtle.java +++ b/src/main/java/ui/JMenuBarTurtle.java @@ -41,6 +41,7 @@ package ui; import common.ConfigurationTTool; import common.SpecConfigTTool; +import myutil.TraceManager; import javax.swing.*; //import javax.swing.event.*; @@ -79,20 +80,11 @@ public class JMenuBarTurtle extends JMenuBar { } - // Menus - private void buildMenus(MainGUI mgui) { - // Main menu - file = new JMenu("File"); - edit = new JMenu("Edit"); - diagram = new JMenu("Diagram"); - vAndV = new JMenu("V&V"); - codeG = new JMenu("Code Generation"); - view = new JMenu("View"); - tool = new JMenu("Tool"); - help = new JMenu("Help"); - + public void makeFileMenu(MainGUI mgui) { JMenuItem menuItem; + file.removeAll(); + // FILE menuItem = file.add(mgui.actions[TGUIAction.ACT_NEW]); menuItem.addMouseListener(mgui.mouseHandler); @@ -158,15 +150,36 @@ public class JMenuBarTurtle extends JMenuBar { if (ConfigurationTTool.LastOpenFileDefined) { file.addSeparator(); - - menuItem = file.add(mgui.actions[TGUIAction.ACT_OPEN_LAST]); - menuItem.addMouseListener(mgui.mouseHandler); + for(int i=0; i<ConfigurationTTool.LastOpenFiles.length;i++){ + //TraceManager.addDev("Considering last open file: " + ConfigurationTTool.LastOpenFiles[i]); + if ((ConfigurationTTool.LastOpenFiles[i] != null) && (ConfigurationTTool.LastOpenFiles[i].length() > 0)) { + menuItem = file.add(mgui.actionsLast[i]); + menuItem.addMouseListener(mgui.mouseHandler); + } + } } file.addSeparator(); menuItem = file.add(mgui.actions[TGUIAction.ACT_QUIT]); menuItem.addMouseListener(mgui.mouseHandler); + } + + // Menus + private void buildMenus(MainGUI mgui) { + // Main menu + file = new JMenu("File"); + edit = new JMenu("Edit"); + diagram = new JMenu("Diagram"); + vAndV = new JMenu("V&V"); + codeG = new JMenu("Code Generation"); + view = new JMenu("View"); + tool = new JMenu("Tool"); + help = new JMenu("Help"); + + JMenuItem menuItem; + + makeFileMenu(mgui); //Edit menuItem = edit.add(mgui.actions[TGUIAction.ACT_CUT]); diff --git a/src/main/java/ui/MainGUI.java b/src/main/java/ui/MainGUI.java index 2224574834ddea0dcd0eb411b5a8bea13de91414..8e97473bc81a9bc49c34baee5653872426322f0d 100644 --- a/src/main/java/ui/MainGUI.java +++ b/src/main/java/ui/MainGUI.java @@ -167,6 +167,7 @@ public class MainGUI implements ActionListener, WindowListener, KeyListener, Per // Actions public TGUIAction[] actions; + public TGUIAction[] actionsLast; public MouseHandler mouseHandler; public KeyListener keyHandler; @@ -558,6 +559,16 @@ public class MainGUI implements ActionListener, WindowListener, KeyListener, Per actions[i].addActionListener(this); //actions[i].addKeyListener(this); } + actionsLast = new TGUIAction[ConfigurationTTool.NB_LAST_OPEN_FILE]; + for (int j = 0; j < actionsLast.length; j++) { + actionsLast[j] = new TGUIAction(TGUIAction.ACT_OPEN_LAST, "Open recent: " + ConfigurationTTool.LastOpenFiles[j]); + actionsLast[j].addActionListener(this); + //actions[i].addKeyListener(this); + } + if (jmenubarturtle != null) { + jmenubarturtle.makeFileMenu(this); + } + } public String getTitle() { @@ -2369,6 +2380,8 @@ public class MainGUI implements ActionListener, WindowListener, KeyListener, Per public void updateLastOpenFile(File file) { if (ConfigurationTTool.LastOpenFileDefined) { + + ConfigurationTTool.LastOpenFile = file.getPath(); if (ConfigurationTTool.LastOpenFile.contains(".ttool" + File.separator)) { int last = 0; @@ -2380,6 +2393,29 @@ public class MainGUI implements ActionListener, WindowListener, KeyListener, Per } // Change name of action actions[TGUIAction.ACT_OPEN_LAST].setName(TGUIAction.ACT_OPEN_LAST, ConfigurationTTool.LastOpenFile); + + // is the new name already in the list of opened files? + for(int i=0; i<ConfigurationTTool.LastOpenFiles.length; i++) { + if (ConfigurationTTool.LastOpenFiles[i].compareTo(ConfigurationTTool.LastOpenFile) == 0) { + ConfigurationTTool.LastOpenFiles[i] = ""; + } + } + + // Dec all files + ConfigurationTTool.decLastFiles(); + ConfigurationTTool.LastOpenFiles[0] = ConfigurationTTool.LastOpenFile; + + // We need to update the actions + for (int j = 0; j < actionsLast.length; j++) { + actionsLast[j] = new TGUIAction(TGUIAction.ACT_OPEN_LAST, "Open recent: " + ConfigurationTTool.LastOpenFiles[j]); + actionsLast[j].addActionListener(this); + //actions[i].addKeyListener(this); + } + + if (jmenubarturtle != null) { + jmenubarturtle.makeFileMenu(this); + } + } } @@ -2666,6 +2702,10 @@ public class MainGUI implements ActionListener, WindowListener, KeyListener, Per } public void openLastProject() { + openLastProject(0); + } + + public void openLastProject(int id) { // Check if a current modeling is opened boolean b = actions[TGUIAction.ACT_SAVE].isEnabled(); if (b) { @@ -2674,7 +2714,7 @@ public class MainGUI implements ActionListener, WindowListener, KeyListener, Per } } - file = new File(ConfigurationTTool.LastOpenFile); + file = new File(ConfigurationTTool.LastOpenFiles[id]); if (checkFileForOpen(file)) { String s = null; @@ -2724,6 +2764,7 @@ public class MainGUI implements ActionListener, WindowListener, KeyListener, Per gtm.enableUndo(false); // Issue #41: Moved to common method + updateLastOpenFile(file); loadModels(s, "loaded"); //TraceManager.addDev("Loading"); // load the new TURTLE modeling diff --git a/src/main/java/ui/TGUIAction.java b/src/main/java/ui/TGUIAction.java index a6dd944a4ef918c587bca73a59242822d0555595..7e9541f546d6d81b1c3dfd6b6181742a65195675 100755 --- a/src/main/java/ui/TGUIAction.java +++ b/src/main/java/ui/TGUIAction.java @@ -655,6 +655,41 @@ public class TGUIAction extends AbstractAction { putValue(Action.LONG_DESCRIPTION, _t.LONG_DESCRIPTION); } + public TGUIAction(int id, String name) { + if (actions[0] == null) { + init(); + } + if (actions[id] == null) { + return ; + } + + putValue(Action.ACTION_COMMAND_KEY, name); + + putValue(Action.NAME, name); + putValue(Action.SMALL_ICON, actions[id].SMALL_ICON); + putValue(LARGE_ICON, actions[id].LARGE_ICON); + putValue(Action.SHORT_DESCRIPTION, name); + putValue(Action.LONG_DESCRIPTION, name); + //putValue(Action.MNEMONIC_KEY, new Integer(actions[id].MNEMONIC_KEY)); + if (actions[id].MNEMONIC_KEY != 0) { + if (actions[id].hasControl) { + putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(actions[id].KEY, java.awt.event.InputEvent.CTRL_MASK)); + } else { + if ((actions[id].MNEMONIC_KEY >= 37 && actions[id].MNEMONIC_KEY <= 40) || actions[id].MNEMONIC_KEY == KeyEvent.VK_DELETE) //handling for arrow and delete keys + putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(actions[id].MNEMONIC_KEY, 0)); + else + putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(actions[id].KEY)); + } + } + + if ((id == EXTERNAL_ACTION_1) && (ConfigurationTTool.ExternalCommand1 != null) && (ConfigurationTTool.ExternalCommand1.length()) > 0) { + setLongDescription(EXTERNAL_ACTION_1, ConfigurationTTool.ExternalCommand1); + } + if ((id == EXTERNAL_ACTION_2) && (ConfigurationTTool.ExternalCommand2 != null) && (ConfigurationTTool.ExternalCommand2.length()) > 0) { + setLongDescription(EXTERNAL_ACTION_2, ConfigurationTTool.ExternalCommand2); + } + } + public TGUIAction(int id) { if (actions[0] == null) { init(); @@ -663,6 +698,7 @@ public class TGUIAction extends AbstractAction { return ; } + putValue(Action.NAME, actions[id].NAME); putValue(Action.SMALL_ICON, actions[id].SMALL_ICON); putValue(LARGE_ICON, actions[id].LARGE_ICON);