]> git.argeo.org Git - gpl/argeo-slc.git/blob - swt/rcp/org.argeo.tool.desktop/src/org/argeo/tool/desktop/MiniDesktopCli.java
Merge remote-tracking branch 'origin/unstable' into testing
[gpl/argeo-slc.git] / swt / rcp / org.argeo.tool.desktop / src / org / argeo / tool / desktop / MiniDesktopCli.java
1 package org.argeo.tool.desktop;
2
3 import java.util.List;
4
5 import org.apache.commons.cli.CommandLine;
6 import org.apache.commons.cli.Option;
7 import org.apache.commons.cli.Options;
8 import org.argeo.api.cli.CommandsCli;
9 import org.argeo.api.cli.DescribedCommand;
10 import org.argeo.minidesktop.MiniBrowser;
11 import org.argeo.minidesktop.MiniDesktopManager;
12 import org.argeo.minidesktop.MiniDesktopSpecific;
13 import org.eclipse.swt.browser.Browser;
14
15 public class MiniDesktopCli extends CommandsCli {
16
17 public MiniDesktopCli(String commandName) {
18 super(commandName);
19 addCommand("launch", new Launch());
20 }
21
22 @Override
23 public String getDescription() {
24 return "A minimalistic desktop manager based on Java and Eclipse SWT.";
25 }
26
27 public static void main(String[] args) {
28 mainImpl(new MiniDesktopCli("minidesktop"), args);
29 }
30
31 static class Launch implements DescribedCommand<String> {
32 @Override
33 public Options getOptions() {
34 Options options = new Options();
35 options.addOption(Option.builder().longOpt("fullscreen")
36 .desc("take control of the whole screen (default is to run in a window)").build());
37 options.addOption(Option.builder().longOpt("stacking")
38 .desc("open apps as tabs (default is to create new windows)").build());
39 return options;
40 }
41
42 @Override
43 public String apply(List<String> args) {
44 CommandLine cl = toCommandLine(args);
45 boolean fullscreen = cl.hasOption("fullscreen");
46 boolean stacking = cl.hasOption("stacking");
47
48 MiniDesktopSpecific.setMiniDesktopSpecific(new MiniDesktopSpecific() {
49 @Override
50 protected void addBrowserTitleListener(MiniBrowser miniBrowser, Browser browser) {
51 browser.addTitleListener(e -> miniBrowser.titleChanged(e.title));
52 }
53
54 @Override
55 protected void addBrowserOpenWindowListener(MiniBrowser miniBrowser, Browser browser) {
56 browser.addOpenWindowListener((e) -> {
57 e.browser = miniBrowser.openNewBrowserWindow();
58 });
59 }
60
61 });
62
63 MiniDesktopManager desktopManager = new MiniDesktopManager(fullscreen, stacking);
64 desktopManager.init();
65 desktopManager.run();
66 desktopManager.dispose();
67 return null;
68 }
69
70 @Override
71 public String getDescription() {
72 return "Launch a minidesktop manager.";
73 }
74
75 }
76 }