/* * Copyright (c) 2009, Paul Merlin. All Rights Reserved. * * 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. * */ package org.swing.on.steroids.swing; import com.google.inject.Inject; import java.awt.Window; import java.awt.TrayIcon; import java.awt.MenuItem; import java.awt.Image; import java.util.Collection; import java.util.Map; import javax.swing.AbstractButton; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JCheckBox; import javax.swing.JComboBox; import javax.swing.JPanel; import javax.swing.JTextField; import javax.swing.JPasswordField; import javax.swing.JToggleButton; import javax.swing.JTree; import org.swing.on.steroids.threading.WorkQueue; import org.swing.on.steroids.views.handlers.HasButtonBehavior; import org.swing.on.steroids.views.values.HasValueChangeHandlers; import org.swing.on.steroids.views.handlers.HasClickHandlers; import org.swing.on.steroids.views.handlers.HasFocusHandlers; import org.swing.on.steroids.swing.components.EnhancedLabel; import org.swing.on.steroids.swing.notifications.ButtonHasButtonBehavior; import org.swing.on.steroids.swing.notifications.ButtonHasClickHandlers; import org.swing.on.steroids.swing.notifications.EnhancedLabelHasImageValueChangeHandlers; import org.swing.on.steroids.swing.notifications.WindowHasFocusHandlers; import org.swing.on.steroids.swing.notifications.JCheckBoxHasValueChangeHandlers; import org.swing.on.steroids.swing.notifications.MenuItemHasClickHandlers; import org.swing.on.steroids.swing.notifications.TrayIconHasClickHandlers; import org.swing.on.steroids.swing.notifications.JFrameHasCloseClickHandlers; import org.swing.on.steroids.swing.notifications.JComboBoxHasValueChangeHandlers; import org.swing.on.steroids.swing.notifications.JPaneHasClickHandlers; import org.swing.on.steroids.swing.notifications.JPasswordFieldHasCharsValueChangeHandlers; import org.swing.on.steroids.swing.notifications.JTextComponentHasStringValueChangeHandlers; import org.swing.on.steroids.swing.notifications.JToggleButtonGroupHasValueChangeHandlers; import org.swing.on.steroids.swing.notifications.JTreeHasValueChangeHandlers; /** * @author Paul Merlin * @author Jean-Michel Tonneau * @author Fabien Barbero * @author David Emo */ public class SwingWrappersFactory { protected final WorkQueue workQueue; @Inject public SwingWrappersFactory( WorkQueue workQueue ) { this.workQueue = workQueue; } public final HasFocusHandlers createWindowHasFocusHandlers( Window window ) { return new WindowHasFocusHandlers( workQueue, window ); } @Deprecated public final HasClickHandlers<Void> createJButtonHasClickHandler( JButton button ) { return createButtonHasClickHandler( button ); } public final HasClickHandlers<Void> createButtonHasClickHandler( AbstractButton button ) { return new ButtonHasClickHandlers( workQueue, button ); } @Deprecated public final HasButtonBehavior createJButtonHasButtonBehavior( JButton button ) { return createButtonHasButtonBehavior( button ); } public final HasButtonBehavior createButtonHasButtonBehavior( AbstractButton button ) { return new ButtonHasButtonBehavior( workQueue, button ); } public final HasClickHandlers<Void> createPanelHasClickHandlers( JPanel glassPane ) { return new JPaneHasClickHandlers( workQueue, glassPane ); } public final HasClickHandlers<Void> createJFrameHasCloseClickHandlers( JFrame frame ) { return new JFrameHasCloseClickHandlers( workQueue, frame ); } public final HasClickHandlers<Void> createTrayIconHasClickHandlers( TrayIcon trayIcon ) { return new TrayIconHasClickHandlers( workQueue, trayIcon ); } public final HasClickHandlers<Void> createMenuItemHasClickHandlers( MenuItem menuItem ) { return new MenuItemHasClickHandlers( workQueue, menuItem ); } public final <V> HasValueChangeHandlers<V> createJComboBoxHasValueChangeHandlers( JComboBox jComboBox ) { return new JComboBoxHasValueChangeHandlers<V>( workQueue, jComboBox ); } // FIXME : use generics to box type of collection elements public final HasValueChangeHandlers<Collection<?>> createJTreeHasTreePathValueChangeHandlers( JTree tree ) { return new JTreeHasValueChangeHandlers( workQueue, tree ); } public final HasValueChangeHandlers<String> createJTextComponentHasStringValueChangeHandlers( JTextField textField ) { return new JTextComponentHasStringValueChangeHandlers( workQueue, textField ); } public final HasValueChangeHandlers<char[]> createJPasswordFieldHasCharsValueChangeHandlers( JPasswordField passwordField ) { return new JPasswordFieldHasCharsValueChangeHandlers( workQueue, passwordField ); } public final HasValueChangeHandlers<Image> createEnhancedLabelHasImageValueChangeHandlers( EnhancedLabel enhancedLabel ) { return new EnhancedLabelHasImageValueChangeHandlers( workQueue, enhancedLabel ); } public final HasValueChangeHandlers<Boolean> createJCheckBoxHasValueChangeHandlers( JCheckBox checkBox ) { return new JCheckBoxHasValueChangeHandlers( workQueue, checkBox ); } public final <T> HasValueChangeHandlers<T> createJToggleButtonGroupHasValueChangeHandlers( Map<JToggleButton, T> toggleButtons ) { return new JToggleButtonGroupHasValueChangeHandlers<T>( workQueue, toggleButtons ); } }