Skip to content

Commit

Permalink
Add 'Show Welcome window' item when Welcome window is not visible
Browse files Browse the repository at this point in the history
  • Loading branch information
ghedlund committed Oct 9, 2018
1 parent afe666e commit 9d5d745
Show file tree
Hide file tree
Showing 4 changed files with 42 additions and 8 deletions.
3 changes: 2 additions & 1 deletion app/src/main/java/ca/phon/app/Main.java
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@
import ca.phon.app.hooks.PhonStartupHook;
import ca.phon.app.log.LogManager;
import ca.phon.app.modules.EntryPointArgs;
import ca.phon.app.welcome.WelcomeWindowEP;
import ca.phon.plugin.IPluginExtensionPoint;
import ca.phon.plugin.PluginEntryPointRunner;
import ca.phon.plugin.PluginException;
Expand All @@ -57,7 +58,7 @@ public class Main {
Main.class.getName() + ".initialEntryPoint";

private final static String initialEntryPoint =
PrefHelper.get(INITIAL_EP_PROP, "WelcomeWindow");
PrefHelper.get(INITIAL_EP_PROP, WelcomeWindowEP.EP_NAME);

public static void main(String[] args) {
createDataFolder();
Expand Down
5 changes: 4 additions & 1 deletion app/src/main/java/ca/phon/app/menu/DefaultMenuFilter.java
Original file line number Diff line number Diff line change
Expand Up @@ -44,9 +44,12 @@
import ca.phon.app.menu.workspace.WorkspaceProjectsMenuListener;
import ca.phon.app.prefs.PhonProperties;
import ca.phon.app.welcome.WelcomeWindow;
import ca.phon.app.welcome.WelcomeWindowEP;
import ca.phon.plugin.IPluginMenuFilter;
import ca.phon.plugin.PluginAction;
import ca.phon.project.Project;
import ca.phon.ui.CommonModuleFrame;
import ca.phon.ui.action.PhonUIAction;
import ca.phon.ui.menu.MenuBuilder;
import ca.phon.util.PrefHelper;

Expand Down Expand Up @@ -119,7 +122,7 @@ protected void addEditMenu(Window owner, JMenuBar menu) {
protected void addWorkspaceMenu(Window owner, JMenuBar menu) {
final MenuBuilder builder = new MenuBuilder(menu);
JMenu workspaceMenu = builder.addMenu(".@Edit", "Workspace");

workspaceMenu.add(new SelectWorkspaceCommand());

final JMenu workspaceProjectsMenu = new JMenu("Workspace projects");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,9 @@
import javax.swing.event.MenuEvent;
import javax.swing.event.MenuListener;

import ca.phon.app.welcome.WelcomeWindow;
import ca.phon.app.welcome.WelcomeWindowEP;
import ca.phon.plugin.PluginAction;
import ca.phon.project.Project;
import ca.phon.ui.CommonModuleFrame;
import ca.phon.ui.action.PhonUIAction;
Expand Down Expand Up @@ -56,6 +59,8 @@ public void menuSelected(MenuEvent arg0) {
JMenu menu = (JMenu)arg0.getSource();
menu.removeAll();

WelcomeWindow welcomeWindow = null;

final Map<Project, List<CommonModuleFrame>> projectWindows =
new LinkedHashMap<>();
final List<CommonModuleFrame> strayWindows = new ArrayList<>();
Expand All @@ -71,6 +76,10 @@ public void menuSelected(MenuEvent arg0) {
}
windows.add(cmf);
}

if(cmf instanceof WelcomeWindow) {
welcomeWindow = (WelcomeWindow)cmf;
}
}

for(Project project:projectWindows.keySet()) {
Expand All @@ -93,6 +102,13 @@ public void menuSelected(MenuEvent arg0) {
menu.add(projectWindowItem);
}

// if no welcome window found, add item to show it
if(welcomeWindow == null) {
final PluginAction welcomeWindowAct = new PluginAction(WelcomeWindowEP.EP_NAME);
welcomeWindowAct.putValue(PhonUIAction.NAME, "Show Welcome window");
menu.add(new JMenuItem(welcomeWindowAct));
}

// generic close item
final JMenuItem closeItem = new JMenuItem(new CloseWindowCommand(owner.get()));
menu.add(closeItem);
Expand Down
26 changes: 20 additions & 6 deletions app/src/main/java/ca/phon/app/welcome/WelcomeWindowEP.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,23 +21,37 @@

import ca.phon.plugin.IPluginEntryPoint;
import ca.phon.plugin.PhonPlugin;
import ca.phon.ui.CommonModuleFrame;

@PhonPlugin(author="Greg Hedlund", minPhonVersion="Phon 2.2", version="1")
public class WelcomeWindowEP implements IPluginEntryPoint {

public final static String EP_NAME = "WelcomeWindow";

@Override
public String getName() {
return "WelcomeWindow";
return EP_NAME;
}

@Override
public void pluginStart(Map<String, Object> args) {
final Runnable onEDT = () -> {
final WelcomeWindow window = new WelcomeWindow();
window.pack();
window.setSize(900, 710);
window.centerWindow();
window.setVisible(true);
WelcomeWindow window = null;
for(var cmf:CommonModuleFrame.getOpenWindows()) {
if(cmf instanceof WelcomeWindow)
window = (WelcomeWindow)cmf;
}

if(window == null) {
window = new WelcomeWindow();
window.pack();
window.setSize(900, 710);
window.centerWindow();
window.setVisible(true);
} else {
window.setVisible(true);
window.toFront();
}
};
if(SwingUtilities.isEventDispatchThread())
onEDT.run();
Expand Down

0 comments on commit 9d5d745

Please sign in to comment.