Skip to content

Commit f7a66eb

Browse files
maarzttinevez
authored andcommitted
Add classes for executing Mastodon within the IDE
1 parent e62ceef commit f7a66eb

3 files changed

Lines changed: 172 additions & 0 deletions

File tree

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
/*-
2+
* #%L
3+
* Mastodon
4+
* %%
5+
* Copyright (C) 2014 - 2022 Tobias Pietzsch, Jean-Yves Tinevez
6+
* %%
7+
* Redistribution and use in source and binary forms, with or without
8+
* modification, are permitted provided that the following conditions are met:
9+
*
10+
* 1. Redistributions of source code must retain the above copyright notice,
11+
* this list of conditions and the following disclaimer.
12+
* 2. Redistributions in binary form must reproduce the above copyright notice,
13+
* this list of conditions and the following disclaimer in the documentation
14+
* and/or other materials provided with the distribution.
15+
*
16+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
17+
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18+
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19+
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE
20+
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
21+
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
22+
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
23+
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
24+
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
25+
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
26+
* POSSIBILITY OF SUCH DAMAGE.
27+
* #L%
28+
*/
29+
package org.mastodon;
30+
31+
import org.scijava.Context;
32+
import org.scijava.ui.UIService;
33+
34+
/**
35+
* Shows the ImageJ main window, with Mastodon installed.
36+
*
37+
* @author Matthias Arzt
38+
*/
39+
public class StartImageJ
40+
{
41+
public static void main( String... args )
42+
{
43+
Context context = new Context();
44+
UIService uiService = context.service( UIService.class );
45+
uiService.showUI();
46+
}
47+
}
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
/*-
2+
* #%L
3+
* Mastodon
4+
* %%
5+
* Copyright (C) 2014 - 2022 Tobias Pietzsch, Jean-Yves Tinevez
6+
* %%
7+
* Redistribution and use in source and binary forms, with or without
8+
* modification, are permitted provided that the following conditions are met:
9+
*
10+
* 1. Redistributions of source code must retain the above copyright notice,
11+
* this list of conditions and the following disclaimer.
12+
* 2. Redistributions in binary form must reproduce the above copyright notice,
13+
* this list of conditions and the following disclaimer in the documentation
14+
* and/or other materials provided with the distribution.
15+
*
16+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
17+
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18+
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19+
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE
20+
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
21+
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
22+
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
23+
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
24+
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
25+
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
26+
* POSSIBILITY OF SUCH DAMAGE.
27+
* #L%
28+
*/
29+
package org.mastodon;
30+
31+
import org.mastodon.mamut.launcher.MastodonLauncherCommand;
32+
import org.scijava.Context;
33+
import org.scijava.command.CommandService;
34+
import org.scijava.ui.UIService;
35+
36+
/**
37+
* Shows the ImageJ main window and Mastodon launcher.
38+
*
39+
* @author Matthias Arzt
40+
*/
41+
public class StartMastodonLauncher
42+
{
43+
public static void main( String... args )
44+
{
45+
Context context = new Context();
46+
UIService uiService = context.service( UIService.class );
47+
uiService.showUI();
48+
CommandService commandService = context.service( CommandService.class );
49+
commandService.run( MastodonLauncherCommand.class, true );
50+
}
51+
}
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
/*-
2+
* #%L
3+
* Mastodon
4+
* %%
5+
* Copyright (C) 2014 - 2022 Tobias Pietzsch, Jean-Yves Tinevez
6+
* %%
7+
* Redistribution and use in source and binary forms, with or without
8+
* modification, are permitted provided that the following conditions are met:
9+
*
10+
* 1. Redistributions of source code must retain the above copyright notice,
11+
* this list of conditions and the following disclaimer.
12+
* 2. Redistributions in binary form must reproduce the above copyright notice,
13+
* this list of conditions and the following disclaimer in the documentation
14+
* and/or other materials provided with the distribution.
15+
*
16+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
17+
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18+
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19+
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE
20+
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
21+
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
22+
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
23+
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
24+
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
25+
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
26+
* POSSIBILITY OF SUCH DAMAGE.
27+
* #L%
28+
*/
29+
package org.mastodon;
30+
31+
import javax.swing.JFileChooser;
32+
import javax.swing.WindowConstants;
33+
import javax.swing.filechooser.FileNameExtensionFilter;
34+
import mpicbg.spim.data.SpimDataException;
35+
import org.mastodon.mamut.MainWindow;
36+
import org.mastodon.mamut.WindowManager;
37+
import org.mastodon.mamut.project.MamutProjectIO;
38+
import org.scijava.Context;
39+
40+
import java.io.IOException;
41+
42+
/**
43+
* Starts Mastodon on a given project file.
44+
*/
45+
public class StartMastodonOnProject
46+
{
47+
48+
public static void main( String... args )
49+
{
50+
try
51+
{
52+
String projectPath = fileOpenDialog();
53+
System.setProperty( "apple.laf.useScreenMenuBar", "true" );
54+
final WindowManager windowManager = new WindowManager( new Context() );
55+
windowManager.getProjectManager().open( new MamutProjectIO().load( projectPath ) );
56+
final MainWindow win = new MainWindow( windowManager );
57+
win.setVisible( true );
58+
win.setDefaultCloseOperation( WindowConstants.EXIT_ON_CLOSE );
59+
60+
}
61+
catch ( IOException | SpimDataException e )
62+
{
63+
e.printStackTrace();
64+
}
65+
}
66+
67+
private static String fileOpenDialog()
68+
{
69+
JFileChooser fileChooser = new JFileChooser( "Open Mastodon Project" );
70+
fileChooser.setFileFilter( new FileNameExtensionFilter( "Mastodon Project (*.mastodon)", "mastodon" ) );
71+
fileChooser.showOpenDialog( null );
72+
return fileChooser.getSelectedFile().getAbsolutePath();
73+
}
74+
}

0 commit comments

Comments
 (0)