This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository observe. See https://gitlab.nuiton.org/codelutin/observe.git commit e68915eaf178ff64587b11ee3b956090bd8dcee9 Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Dec 21 13:12:25 2016 +0100 Nettoyage code mort + amélioration fermeture (le focus doit sortir du formulaire) --- .../swing/ui/ObserveMainUIInitializer.java | 6 -- .../application/swing/ui/ObserveMainUIModel.java | 31 ++++++ .../swing/ui/content/ContentUIBlockingLayerUI.java | 15 +++ .../swing/ui/content/ContentUIManager.java | 44 +-------- .../ui/content/open/ContentOpenableUIHandler.java | 2 + .../application/swing/ui/util/SpringUtilities.java | 107 +-------------------- 6 files changed, 52 insertions(+), 153 deletions(-) diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/ObserveMainUIInitializer.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/ObserveMainUIInitializer.java index 6875fe1..5c4fd82 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/ObserveMainUIInitializer.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/ObserveMainUIInitializer.java @@ -427,12 +427,6 @@ public class ObserveMainUIInitializer { ui.getNavigationView().addMouseListener(mouseAdapter); ui.getNavigation().addMouseListener(mouseAdapter); ui.getNavigationTreeHeader().addMouseListener(mouseAdapter); -// ui.getSplitpane2().addMouseListener(new MouseAdapter() { -// @Override -// public void mouseEntered(MouseEvent e) { -// ui.getModel().setFocusOnNavigation(false); -// } -// }); } protected void init(ObserveActionMap actionMap, AbstractButton editor) { diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/ObserveMainUIModel.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/ObserveMainUIModel.java index d7504f5..c5264db 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/ObserveMainUIModel.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/ObserveMainUIModel.java @@ -25,12 +25,16 @@ package fr.ird.observe.application.swing.ui; import fr.ird.observe.application.swing.ObserveSwingApplicationContext; import fr.ird.observe.application.swing.configuration.ObserveSwingApplicationConfig; import fr.ird.observe.application.swing.db.ObserveSwingDataSource; +import jaxx.runtime.JAXXObject; import jaxx.runtime.SwingUtil; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.jdesktop.beans.AbstractBean; import javax.swing.Icon; +import javax.swing.JComponent; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; import java.util.Locale; import static org.nuiton.i18n.I18n.t; @@ -45,6 +49,15 @@ public class ObserveMainUIModel extends AbstractBean { /** Logger */ private static final Log log = LogFactory.getLog(ObserveMainUIModel.class); + private final MouseAdapter focusOnBobyMouseListener = new MouseAdapter() { + @Override + public void mouseEntered(MouseEvent e) { + if (log.isDebugEnabled()) { + log.debug("Enter in formula zone: " + e); + } + setFocusOnNavigation(false); + } + }; private static final Icon DB_LOCAL_ICON = SwingUtil.getUIManagerActionIcon("db-local"); private static final Icon DB_REMOTE_ICON = SwingUtil.getUIManagerActionIcon("db-remote"); @@ -461,4 +474,22 @@ public class ObserveMainUIModel extends AbstractBean { this.blockFocus = false; } + public void attachFocusOnBody(JComponent c) { + c.addMouseListener(focusOnBobyMouseListener); + } + + public void attachFocusOnBodyDeep(JAXXObject result) { + if (log.isDebugEnabled()) { + log.debug("Adding to " + result); + } + for (Object o : result.get$objectMap().values()) { + if (o instanceof JComponent) { + attachFocusOnBody((JComponent) o); + } + if (o instanceof JAXXObject && o != result) { + attachFocusOnBodyDeep((JAXXObject) o); + } + } + + } } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/ContentUIBlockingLayerUI.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/ContentUIBlockingLayerUI.java index f69103e..79b7caf 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/ContentUIBlockingLayerUI.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/ContentUIBlockingLayerUI.java @@ -23,6 +23,7 @@ package fr.ird.observe.application.swing.ui.content; */ import com.google.common.collect.ImmutableSet; +import fr.ird.observe.application.swing.ObserveSwingApplicationContext; import fr.ird.observe.application.swing.ui.actions.AbstractUIAction; import jaxx.runtime.swing.BlockingLayerUI; import org.apache.commons.logging.Log; @@ -37,6 +38,7 @@ import javax.swing.KeyStroke; import javax.swing.SwingUtilities; import java.awt.event.ActionEvent; import java.awt.event.KeyEvent; +import java.awt.event.MouseEvent; import java.util.Set; /** @@ -68,6 +70,19 @@ public class ContentUIBlockingLayerUI extends BlockingLayerUI { } @Override + protected void processMouseEvent(MouseEvent e, JXLayer<? extends JComponent> l) { + + switch (e.getID()) { + case MouseEvent.MOUSE_ENTERED: + if (log.isDebugEnabled()) { + log.debug("Enter in formula zone: " + e); + } + ObserveSwingApplicationContext.get().getMainUI().getModel().setFocusOnNavigation(false); + } + super.processMouseEvent(e, l); + } + + @Override protected void processKeyEvent(KeyEvent e, JXLayer<? extends JComponent> l) { InputMap inputMap = ui.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW); diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/ContentUIManager.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/ContentUIManager.java index 53065e4..1e1cf28 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/ContentUIManager.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/ContentUIManager.java @@ -28,17 +28,13 @@ import fr.ird.observe.application.swing.ui.UIHelper; import fr.ird.observe.application.swing.ui.tree.navigation.nodes.NavigationTreeNodeSupport; import fr.ird.observe.services.dto.AbstractObserveDto; import jaxx.runtime.JAXXContext; -import jaxx.runtime.JAXXObject; import jaxx.runtime.context.JAXXInitialContext; import jaxx.runtime.swing.CardLayout2; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import javax.swing.JComponent; import javax.swing.JPanel; import java.awt.Component; -import java.awt.event.MouseAdapter; -import java.awt.event.MouseEvent; import java.lang.reflect.Constructor; /** @@ -99,28 +95,8 @@ public class ContentUIManager { log.debug("Add new content [" + constraints + "] : " + result.getClass().getName()); } - // initialisation du content - MouseAdapter mouseAdapter = new MouseAdapter() { - @Override - public void mouseEntered(MouseEvent e) { - if (log.isDebugEnabled()) { - log.debug("Enter in formula zone: " + e); - } - getMainUI().getModel().setFocusOnNavigation(false); - } - -// @Override -// public void mouseMoved(MouseEvent e) { -// if (!((JComponent) e.getSource()).isFocusOwner()) { -// if (log.isInfoEnabled()) { -// log.info("grab moved focus: " + e); -// } -// getMainUI().getModel().setFocusOnNavigation(false); -// } -// } - }; - result.addMouseListener(mouseAdapter); - addMouseListener(result, mouseAdapter); + getMainUI().getModel().attachFocusOnBody(result); + getMainUI().getModel().attachFocusOnBodyDeep(result); return result; } catch (Exception e) { @@ -128,22 +104,6 @@ public class ContentUIManager { } } - protected void addMouseListener(JAXXObject result, MouseAdapter mouseAdapter) { - if (log.isInfoEnabled()) { - log.info("Adding to " + result); - } - for (Object o : result.get$objectMap().values()) { - if (o instanceof JComponent) { - ((JComponent) o).addMouseListener(mouseAdapter); - } - if (o instanceof JAXXObject && o != result) { - addMouseListener((JAXXObject) o, mouseAdapter); - } - } - - } - - public void openContent(ContentUI<?, ?> content) { String constraints = content.getClass().getName(); diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/open/ContentOpenableUIHandler.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/open/ContentOpenableUIHandler.java index 78e33a5..352b911 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/open/ContentOpenableUIHandler.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/open/ContentOpenableUIHandler.java @@ -142,6 +142,8 @@ public abstract class ContentOpenableUIHandler<E extends IdDto, U extends Conten NavigationTree treeHelper = getTreeHelper(ui); treeHelper.reloadSelectedNode(bean instanceof TripSeineDto || bean instanceof TripLonglineDto, true); updateActions(); + + grabFocusOnform(); } @Override diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/util/SpringUtilities.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/util/SpringUtilities.java index f63a87b..9a7963c 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/util/SpringUtilities.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/util/SpringUtilities.java @@ -66,107 +66,6 @@ import java.awt.Container; * @author Tony Chemit - chemit@codelutin.com */ public class SpringUtilities { - /** - * A debugging utility that prints to stdout the component's - * minimum, preferred, and maximum sizes. - */ - public static void printSizes(Component c) { - System.out.println("minimumSize = " + c.getMinimumSize()); - System.out.println("preferredSize = " + c.getPreferredSize()); - System.out.println("maximumSize = " + c.getMaximumSize()); - } - - /** - * Aligns the first {@code rows} * {@code cols} - * components of {@code parent} in - * a grid. Each component is as big as the maximum - * preferred width and height of the components. - * The parent is made just big enough to fit them all. - * - * @param rows number of rows - * @param cols number of columns - * @param initialX x location to start the grid at - * @param initialY y location to start the grid at - * @param xPad x padding between cells - * @param yPad y padding between cells - */ - public static void makeGrid(Container parent, - int rows, int cols, - int initialX, int initialY, - int xPad, int yPad) { - SpringLayout layout; - try { - layout = (SpringLayout) parent.getLayout(); - } catch (ClassCastException exc) { - System.err.println("The first argument to makeGrid must use SpringLayout."); - return; - } - - Spring xPadSpring = Spring.constant(xPad); - Spring yPadSpring = Spring.constant(yPad); - Spring initialXSpring = Spring.constant(initialX); - Spring initialYSpring = Spring.constant(initialY); - int max = rows * cols; - - //Calculate Springs that are the max of the width/height so that all - //cells have the same size. - Spring maxWidthSpring = layout.getConstraints(parent.getComponent(0)). - getWidth(); - Spring maxHeightSpring = layout.getConstraints(parent.getComponent(0)). - getWidth(); - for (int i = 1; i < max; i++) { - SpringLayout.Constraints cons = layout.getConstraints( - parent.getComponent(i)); - - maxWidthSpring = Spring.max(maxWidthSpring, cons.getWidth()); - maxHeightSpring = Spring.max(maxHeightSpring, cons.getHeight()); - } - - //Apply the new width/height Spring. This forces all the - //components to have the same size. - for (int i = 0; i < max; i++) { - SpringLayout.Constraints cons = layout.getConstraints( - parent.getComponent(i)); - - cons.setWidth(maxWidthSpring); - cons.setHeight(maxHeightSpring); - } - - //Then adjust the x/y constraints of all the cells so that they - //are aligned in a grid. - SpringLayout.Constraints lastCons = null; - SpringLayout.Constraints lastRowCons = null; - for (int i = 0; i < max; i++) { - SpringLayout.Constraints cons = layout.getConstraints( - parent.getComponent(i)); - if (i % cols == 0) { //start of new row - lastRowCons = lastCons; - cons.setX(initialXSpring); - } else { //x position depends on previous component - cons.setX(Spring.sum(lastCons.getConstraint(SpringLayout.EAST), - xPadSpring)); - } - - if (i / cols == 0) { //first row - cons.setY(initialYSpring); - } else { //y position depends on previous row - cons.setY(Spring.sum(lastRowCons.getConstraint(SpringLayout.SOUTH), - yPadSpring)); - } - lastCons = cons; - } - - //Set the parent's size. - SpringLayout.Constraints pCons = layout.getConstraints(parent); - pCons.setConstraint(SpringLayout.SOUTH, - Spring.sum( - Spring.constant(yPad), - lastCons.getConstraint(SpringLayout.SOUTH))); - pCons.setConstraint(SpringLayout.EAST, - Spring.sum( - Spring.constant(xPad), - lastCons.getConstraint(SpringLayout.EAST))); - } /* Used by makeCompactGrid. */ @@ -213,7 +112,7 @@ public class SpringUtilities { for (int r = 0; r < rows; r++) { width = Spring.max(width, getConstraintsForCell(r, c, parent, cols). - getWidth()); + getWidth()); } for (int r = 0; r < rows; r++) { SpringLayout.Constraints constraints = @@ -229,9 +128,7 @@ public class SpringUtilities { for (int r = 0; r < rows; r++) { Spring height = Spring.constant(0); for (int c = 0; c < cols; c++) { - height = Spring.max(height, - getConstraintsForCell(r, c, parent, cols). - getHeight()); + height = Spring.max(height, getConstraintsForCell(r, c, parent, cols).getHeight()); } for (int c = 0; c < cols; c++) { SpringLayout.Constraints constraints = -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.