/*
* Copyright 2016 SIB Visions GmbH
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*
*
* History
*
* 11.08.2016 - [JR] - creation
*/
package jvx.rad.application;
import jvx.rad.ui.IComponent;
import jvx.rad.ui.container.IDesktopPanel;
import jvx.rad.util.IRunnable;
import javax.swing.JComponent;
import javax.swing.SwingUtilities;
import com.sibvisions.rad.application.Application;
import com.sibvisions.rad.ui.swing.impl.SwingApplication;
/**
* The SimpleTestLauncher
starts a {@link SwingApplication} and shows
* a specific content in the application pane.
*
* @author René Jahn
*/
public class SimpleTestLauncher
{
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Initialization
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/**
* Creates a new instance of SimpleTestLauncher
.
*
* @param pComponent the component to show
*/
public SimpleTestLauncher(final IComponent pComponent)
{
final SwingApplication app = new SwingApplication();
app.startup(SimpleTestApplication.class.getName(), null, null);
app.setSystemExitOnDispose(false);
app.eventWindowClosed().addListener(new IRunnable()
{
public void run()
{
synchronized (SimpleTestLauncher.this)
{
SimpleTestLauncher.this.notify();
}
}
});
SwingUtilities.invokeLater(new Runnable()
{
public void run()
{
IDesktopPanel desktop = ((Application)app.getApplication()).getDesktopPane();
desktop.removeAll();
desktop.add(pComponent);
//because test was created before LaF was set!
SwingUtilities.updateComponentTreeUI((JComponent)pComponent.getResource());
}
});
synchronized(this)
{
try
{
wait();
}
catch (InterruptedException ie)
{
//ignore
}
}
}
} // SimpleTestLauncher