Create a Self‑Discipline IDEA Plugin: Step‑by‑Step StopCoding Guide
This article introduces the motivation behind the StopCoding IntelliJ IDEA plugin, provides detailed installation and usage instructions, and walks through its development—including plugin structure, Swing dialog creation, timer implementation, and essential Java code—so developers can build their own productivity‑boosting tool.
Preface
Inspired by personal experience of long hours coding without breaks, the author created a small IntelliJ IDEA plugin named StopCoding to enforce regular rest periods. The plugin displays an unclosable dialog at set intervals, forcing the user to pause coding.
Installation Guide
Search for "StopCoding" in IDEA's plugin marketplace and install it (officially approved).
For internal network users, download the plugin package from the provided link and install it locally.
Usage
Open the Tools → StopCoding menu.
Configure the desired interval and save the settings.
During work, the plugin will show a reminder dialog that cannot be closed until the countdown finishes, ensuring a proper break.
Development Guide
The plugin is built with basic Java knowledge, using Swing for UI and java.util.Timer for scheduling.
Plugin Structure
plugin.xml: Core configuration file defining actions and extensions. data package: Contains SettingData (configuration model) and DataCenter (runtime static variables). service package: Includes TimerService for timer logic. task package: Defines RestTask (rest period) and WorkTask (work period). ui package: Holds SettingDialog (settings UI) and TipsDialog (rest reminder UI). StopCodingSettingAction: Entry point action registered in plugin.xml.
Swing Dialog Creation
IDEA provides visual tools for creating Swing dialogs. The dialog includes OK and Cancel buttons with pre‑attached listeners.
public class TestDialog extends JDialog {
private JPanel contentPane;
private JButton buttonOK;
private JButton buttonCancel;
public TestDialog() {
setContentPane(contentPane);
setModal(true);
getRootPane().setDefaultButton(buttonOK);
buttonOK.addActionListener(e -> onOK());
buttonCancel.addActionListener(e -> onCancel());
// other code
}
}Timer Implementation
The plugin uses java.util.Timer to schedule work and rest intervals. Typical usage involves creating a TimerTask, scheduling it with schedule(), and cancelling with cancel() when needed.
Conclusion
With the basics covered—installation, usage, plugin architecture, Swing UI, and timer logic—developers can explore the source code and create their own IntelliJ IDEA plugins to improve productivity and health.
Signed-in readers can open the original source through BestHub's protected redirect.
This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactand we will review it promptly.
Java Backend Technology
Focus on Java-related technologies: SSM, Spring ecosystem, microservices, MySQL, MyCat, clustering, distributed systems, middleware, Linux, networking, multithreading. Occasionally cover DevOps tools like Jenkins, Nexus, Docker, and ELK. Also share technical insights from time to time, committed to Java full-stack development!
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.
