de.espirit.firstspirit.client.gui.applications.SwingApplicationExample


package de.espirit.firstspirit.client.gui.applications;

import de.espirit.firstspirit.access.ServicesBroker;
import de.espirit.firstspirit.client.gui.applications.SwingApplicationConfiguration.ComponentFactory;

import javax.swing.JLabel;
import java.awt.Component;


/**
 * Examples how to use a swing application
 *
 * @since 4.2.416
 */
public class SwingApplicationExample {


	/**
	 * Creates a swing application tab.
	 *
	 * @param title the title used for the application tab
	 * @return the created application
	 * @since 4.2.416
	 */
	public SwingApplication createSwingApplication(final ServicesBroker servicesBroker, final String title) {

		// get the applicationservice from servicesBroker
		final ApplicationService appService = servicesBroker.getService(ApplicationService.class);


		// create a new swing application configuration
		final SwingApplicationConfiguration swingConfig = SwingApplicationConfiguration.GENERATOR.invoke().
			title(title).
			componentFactory(new ComponentFactory<MyLabel>() {
				public MyLabel createComponent() {
					return new MyLabel("Swing app component");
				}


				public void dispose(final MyLabel label) {
					label.cleanUp();
				}
			});

		// open an application tab of type multitab
		final ApplicationTab<SwingApplication> swingTab = appService.openApplication(SwingApplication.TYPE, swingConfig);


		return swingTab.getApplication();
	}


	public static class MyLabel extends JLabel {

		public MyLabel(final String label) {
			super(label);
		}


		public void cleanUp() {
			// clean up resources
		}
	}
}