<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Recent changes to IDE Modernization</title><link>https://sourceforge.net/p/oculix/wiki/IDE%2520Modernization/</link><description>Recent changes to IDE Modernization</description><atom:link href="https://sourceforge.net/p/oculix/wiki/IDE%20Modernization/feed" rel="self"/><language>en</language><lastBuildDate>Sun, 12 Apr 2026 00:55:56 -0000</lastBuildDate><atom:link href="https://sourceforge.net/p/oculix/wiki/IDE%20Modernization/feed" rel="self" type="application/rss+xml"/><item><title>IDE Modernization modified by Julien Mer</title><link>https://sourceforge.net/p/oculix/wiki/IDE%2520Modernization/</link><description>&lt;div class="markdown_content"&gt;&lt;h1 id="h-ide-modernization"&gt;IDE Modernization&lt;/h1&gt;
&lt;p&gt;&lt;img alt="Refactor" rel="nofollow" src="https://img.shields.io/badge/type-refactor-cyan?style=for-the-badge"/&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Breaking up the monolithic &lt;code&gt;SikulixIDE.java&lt;/code&gt; (3000+ lines) into focused manager classes.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr/&gt;
&lt;h2 id="h-the-problem"&gt;The Problem&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;SikulixIDE.java&lt;/code&gt; was a God class handling:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Window management&lt;/li&gt;
&lt;li&gt;All menus (File, Edit, Run, View, Tool, Help)&lt;/li&gt;
&lt;li&gt;All menu actions&lt;/li&gt;
&lt;li&gt;Editor tab management&lt;/li&gt;
&lt;li&gt;Script execution&lt;/li&gt;
&lt;li&gt;File operations&lt;/li&gt;
&lt;li&gt;Recent files tracking&lt;/li&gt;
&lt;li&gt;Undo/redo state&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="h-what-was-extracted"&gt;What Was Extracted&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Class&lt;/th&gt;
&lt;th&gt;Lines&lt;/th&gt;
&lt;th&gt;Responsibility&lt;/th&gt;
&lt;th&gt;PR&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;IDEMenuManager&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;1,078&lt;/td&gt;
&lt;td&gt;Menu creation, action classes, menu state&lt;/td&gt;
&lt;td&gt;&lt;span&gt;[#6]&lt;/span&gt;, &lt;span&gt;[#7]&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;IDEWindowManager&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;Window lifecycle, positioning&lt;/td&gt;
&lt;td&gt;branch&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;IDEFileManager&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;File operations, recent files&lt;/td&gt;
&lt;td&gt;branch&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;IDERunManager&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;Script execution, abort&lt;/td&gt;
&lt;td&gt;branch&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;PaneContext&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;Editor tab state (was inner class)&lt;/td&gt;
&lt;td&gt;branch&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="h-architecture"&gt;Architecture&lt;/h2&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;Before:
  SikulixIDE ─── everything (3000+ lines)

After:
  SikulixIDE ─── window + tabs + coordination
      ├── IDEMenuManager ─── menus + actions
      ├── IDEWindowManager ─── window lifecycle
      ├── IDEFileManager ─── file operations
      └── IDERunManager ─── script execution
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;h2 id="h-status"&gt;Status&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;IDEMenuManager&lt;/code&gt; is &lt;strong&gt;merged&lt;/strong&gt; into master (#6, &lt;span&gt;[#7]&lt;/span&gt;)&lt;/li&gt;
&lt;li&gt;Other managers are on &lt;strong&gt;branch&lt;/strong&gt; &lt;code&gt;claude/modernize-oculix-ide-sgjuh&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Java 17 modernization (var, try-with-resources, pattern matching) also on that branch&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Julien Mer</dc:creator><pubDate>Sun, 12 Apr 2026 00:55:56 -0000</pubDate><guid>https://sourceforge.netbbaddca663d2a6e90dc0e754541a1e00586cdeb3</guid></item></channel></rss>