Revision: 2610
http://sourceforge.net/p/swingme/code/2610
Author: yuranet
Date: 2021-12-15 12:57:11 +0000 (Wed, 15 Dec 2021)
Log Message:
-----------
each component reports if it needs to respect minimum size
Modified Paths:
--------------
SwingME/src/net/yura/mobile/gui/cellrenderer/DefaultListCellRenderer.java
SwingME/src/net/yura/mobile/gui/cellrenderer/MenuItemRenderer.java
SwingME/src/net/yura/mobile/gui/components/Button.java
SwingME/src/net/yura/mobile/gui/components/Camera.java
SwingME/src/net/yura/mobile/gui/components/Component.java
SwingME/src/net/yura/mobile/gui/components/ImageView.java
SwingME/src/net/yura/mobile/gui/components/Label.java
SwingME/src/net/yura/mobile/gui/components/List.java
SwingME/src/net/yura/mobile/gui/components/MenuBar.java
SwingME/src/net/yura/mobile/gui/components/Panel.java
SwingME/src/net/yura/mobile/gui/components/ProgressBar.java
SwingME/src/net/yura/mobile/gui/components/ScrollPane.java
SwingME/src/net/yura/mobile/gui/components/Slider.java
SwingME/src/net/yura/mobile/gui/components/Spinner.java
SwingME/src/net/yura/mobile/gui/components/Table.java
SwingME/src/net/yura/mobile/gui/components/TextComponent.java
SwingME/src/net/yura/mobile/gui/components/TextPane.java
Modified: SwingME/src/net/yura/mobile/gui/cellrenderer/DefaultListCellRenderer.java
===================================================================
--- SwingME/src/net/yura/mobile/gui/cellrenderer/DefaultListCellRenderer.java 2021-12-10 16:56:38 UTC (rev 2609)
+++ SwingME/src/net/yura/mobile/gui/cellrenderer/DefaultListCellRenderer.java 2021-12-15 12:57:11 UTC (rev 2610)
@@ -33,6 +33,10 @@
setName("ListRenderer");
}
+ protected boolean getDefaultEnabled() {
+ return true;
+ }
+
/**
* @see javax.swing.DefaultListCellRenderer#getListCellRendererComponent(javax.swing.JList, java.lang.Object, int, boolean, boolean) DefaultListCellRenderer.getListCellRendererComponent
*/
Modified: SwingME/src/net/yura/mobile/gui/cellrenderer/MenuItemRenderer.java
===================================================================
--- SwingME/src/net/yura/mobile/gui/cellrenderer/MenuItemRenderer.java 2021-12-10 16:56:38 UTC (rev 2609)
+++ SwingME/src/net/yura/mobile/gui/cellrenderer/MenuItemRenderer.java 2021-12-15 12:57:11 UTC (rev 2610)
@@ -62,6 +62,10 @@
return "MenuRenderer";
}
+ protected boolean getDefaultEnabled() {
+ return true;
+ }
+
//#mdebug debug
public String toString() {
return super.toString()+"["+component+"]";
Modified: SwingME/src/net/yura/mobile/gui/components/Button.java
===================================================================
--- SwingME/src/net/yura/mobile/gui/components/Button.java 2021-12-10 16:56:38 UTC (rev 2609)
+++ SwingME/src/net/yura/mobile/gui/components/Button.java 2021-12-15 12:57:11 UTC (rev 2610)
@@ -82,7 +82,6 @@
*/
public Button(String label) {
super(label);
- focusable = true;
setHorizontalAlignment(Graphics.HCENTER);
}
@@ -96,6 +95,14 @@
setIcon(img);
}
+ public String getDefaultName() {
+ return "Button";
+ }
+
+ protected boolean getDefaultEnabled() {
+ return true;
+ }
+
public boolean isVisible() {
if ( mneonic == KeyEvent.KEY_SOFTKEY1 ||
@@ -375,10 +382,6 @@
this.useSelectButton = useSelectButton;
}
- public String getDefaultName() {
- return "Button";
- }
-
protected int getState() {
int result = super.getState();
if (selected) {
Modified: SwingME/src/net/yura/mobile/gui/components/Camera.java
===================================================================
--- SwingME/src/net/yura/mobile/gui/components/Camera.java 2021-12-10 16:56:38 UTC (rev 2609)
+++ SwingME/src/net/yura/mobile/gui/components/Camera.java 2021-12-15 12:57:11 UTC (rev 2610)
@@ -69,12 +69,16 @@
private boolean seBug = true;
public Camera() {
-
//#debug debug
Logger.debug("CameraPanel() constructor");
+ }
- focusable = true;
+ protected boolean getDefaultEnabled() {
+ return true;
+ }
+ public void updateUI() {
+ super.updateUI();
font = theme.getFont(Style.ALL);
}
Modified: SwingME/src/net/yura/mobile/gui/components/Component.java
===================================================================
--- SwingME/src/net/yura/mobile/gui/components/Component.java 2021-12-10 16:56:38 UTC (rev 2609)
+++ SwingME/src/net/yura/mobile/gui/components/Component.java 2021-12-15 12:57:11 UTC (rev 2610)
@@ -74,8 +74,8 @@
* @see javax.swing.JComponent#JComponent() JComponent.JComponent
*/
public Component() {
- focusable = true;
visible = true;
+ focusable = getDefaultEnabled();
updateUI();
}
@@ -190,6 +190,12 @@
protected abstract String getDefaultName();
/**
+ * as this property will never change for a given component, we avoid adding extra state by making it a method
+ * @return true if this component receives touch events by default and so needs to respect the OS minimum touch size
+ */
+ protected abstract boolean getDefaultEnabled();
+
+ /**
* @see java.awt.Component#isFocusOwner() Component.isFocusOwner
*/
public boolean isFocusOwner() {
@@ -584,7 +590,7 @@
workoutMinimumSize();
//}
- if ((getCurrentState() & Style.DISABLED) == 0) {
+ if (getDefaultEnabled()) {
int minimumTouchTarget = getDesktopPane().minimumTouchTarget;
Border insets = getInsets();
if (getWidthWithBorder() < minimumTouchTarget) {
Modified: SwingME/src/net/yura/mobile/gui/components/ImageView.java
===================================================================
--- SwingME/src/net/yura/mobile/gui/components/ImageView.java 2021-12-10 16:56:38 UTC (rev 2609)
+++ SwingME/src/net/yura/mobile/gui/components/ImageView.java 2021-12-15 12:57:11 UTC (rev 2610)
@@ -20,9 +20,11 @@
// private int[] py;
public ImageView() {
- focusable = false;
}
+ protected boolean getDefaultEnabled() {
+ return false;
+ }
public void setBackgroundImage(Icon backgroundImage) {
this.bgImage = backgroundImage;
Modified: SwingME/src/net/yura/mobile/gui/components/Label.java
===================================================================
--- SwingME/src/net/yura/mobile/gui/components/Label.java 2021-12-10 16:56:38 UTC (rev 2609)
+++ SwingME/src/net/yura/mobile/gui/components/Label.java 2021-12-15 12:57:11 UTC (rev 2610)
@@ -55,9 +55,6 @@
* @see javax.swing.JLabel#JLabel(java.lang.String) JLabel.JLabel
*/
public Label(String text) {
-
- focusable = false;
-
// swing will set a empty string as the value if you pass in null to the constructor
// but if u call setText(null) then the text will be null, (getText() will return null)
// but it will still display as a empty string)
@@ -67,9 +64,12 @@
alignment = Graphics.VCENTER | Graphics.LEFT;
textPosition = Graphics.VCENTER | Graphics.RIGHT;
-
}
+ protected boolean getDefaultEnabled() {
+ return false;
+ }
+
/**
* @param icon The image to be displayed by the label
* @see javax.swing.JLabel#JLabel(javax.swing.Icon) JLabel.JLabel
Modified: SwingME/src/net/yura/mobile/gui/components/List.java
===================================================================
--- SwingME/src/net/yura/mobile/gui/components/List.java 2021-12-10 16:56:38 UTC (rev 2609)
+++ SwingME/src/net/yura/mobile/gui/components/List.java 2021-12-15 12:57:11 UTC (rev 2610)
@@ -113,6 +113,10 @@
setSelectedIndex(-1);
}
+ protected boolean getDefaultEnabled() {
+ return true;
+ }
+
/**
* @param a
* @see javax.swing.JList#setListData(java.util.Vector) JList.setListData
Modified: SwingME/src/net/yura/mobile/gui/components/MenuBar.java
===================================================================
--- SwingME/src/net/yura/mobile/gui/components/MenuBar.java 2021-12-10 16:56:38 UTC (rev 2609)
+++ SwingME/src/net/yura/mobile/gui/components/MenuBar.java 2021-12-15 12:57:11 UTC (rev 2610)
@@ -36,13 +36,28 @@
MenuBar owner;
+ /**
+ * {@link #focusable} is automatically updated in {@link #workoutMinimumSize()}
+ */
public MenuBar() {
setLayoutOrientation(List.HORIZONTAL);
setCellRenderer( new MenuItemRenderer() );
setActionCommand("activate");
addActionListener(this);
+ // ignore getDefaultEnabled value
+ focusable = true;
}
+ public String getDefaultName() {
+ return "MenuBar";
+ }
+
+ protected boolean getDefaultEnabled() {
+ // we do not have a default, as sometimes we have buttons and someone we don't and want to shrink to nothing
+ // when we do have buttons we will get the minimum size from them
+ return false;
+ }
+
public boolean processKeyEvent(KeyEvent keyEvent) {
if (getLayoutOrientation()==List.VERTICAL && getSelectedValue() instanceof Menu && keyEvent.justPressedAction(Canvas.RIGHT)) {
fireActionPerformed();
@@ -61,10 +76,6 @@
return super.isVisible();
}
- public String getDefaultName() {
- return "MenuBar";
- }
-
/**
* @see Panel#add(net.yura.mobile.gui.components.Component)
* @see java.awt.Container#add(java.awt.Component) Container.add
Modified: SwingME/src/net/yura/mobile/gui/components/Panel.java
===================================================================
--- SwingME/src/net/yura/mobile/gui/components/Panel.java 2021-12-10 16:56:38 UTC (rev 2609)
+++ SwingME/src/net/yura/mobile/gui/components/Panel.java 2021-12-15 12:57:11 UTC (rev 2610)
@@ -47,7 +47,6 @@
public Panel() {
components = new Vector();
constraints = new Hashtable(1);
- focusable = false;
if (defaultLayout==null) {
defaultLayout = new FlowLayout();
@@ -57,6 +56,10 @@
// this is true as u need to select a panel to get to 1 of its components
}
+ protected boolean getDefaultEnabled() {
+ return false;
+ }
+
/**
* @param n the LayoutManager to use
* @see javax.swing.JPanel#JPanel(java.awt.LayoutManager) JPanel.JPanel
@@ -199,7 +202,7 @@
protected void workoutMinimumSize() {
for(int i = 0; i < components.size(); i++) {
- Component component = (Component)components.elementAt(i);
+ Component component = (Component)components.elementAt(i);
if (component.isVisible()) {
component.workoutPreferredSize();
}
Modified: SwingME/src/net/yura/mobile/gui/components/ProgressBar.java
===================================================================
--- SwingME/src/net/yura/mobile/gui/components/ProgressBar.java 2021-12-10 16:56:38 UTC (rev 2609)
+++ SwingME/src/net/yura/mobile/gui/components/ProgressBar.java 2021-12-15 12:57:11 UTC (rev 2610)
@@ -40,8 +40,6 @@
* @see javax.swing.JProgressBar#JProgressBar() JProgressBar.JProgressBar
*/
public ProgressBar() {
- focusable = false;
-
// set the default value to 100, but only if it has not been already set by the theme (super constructor -> updateUI)
if (loaded == 0) {
loaded = 100;
@@ -53,6 +51,10 @@
setSprite(sp);
}
+ protected boolean getDefaultEnabled() {
+ return false;
+ }
+
public void setSprite(Sprite sp) {
sprite = sp;
loaded = sprite.getFrameSequenceLength()-1;
Modified: SwingME/src/net/yura/mobile/gui/components/ScrollPane.java
===================================================================
--- SwingME/src/net/yura/mobile/gui/components/ScrollPane.java 2021-12-10 16:56:38 UTC (rev 2609)
+++ SwingME/src/net/yura/mobile/gui/components/ScrollPane.java 2021-12-15 12:57:11 UTC (rev 2610)
@@ -71,7 +71,6 @@
slider = new Slider();
slider.setName("ScrollBar");
- slider.setFocusable(false);
setMode(m);
}
@@ -343,7 +342,7 @@
protected void workoutMinimumSize() {
- slider.workoutPreferredSize();
+ slider.workoutMinimumSize();
switch (mode) {
case MODE_SCROLLBARS: barThickness = getBarThickness(); break;
Modified: SwingME/src/net/yura/mobile/gui/components/Slider.java
===================================================================
--- SwingME/src/net/yura/mobile/gui/components/Slider.java 2021-12-10 16:56:38 UTC (rev 2609)
+++ SwingME/src/net/yura/mobile/gui/components/Slider.java 2021-12-15 12:57:11 UTC (rev 2610)
@@ -71,6 +71,10 @@
tickSpace = font.getHeight()/2;
}
+ protected boolean getDefaultEnabled() {
+ return true;
+ }
+
/**
* @see javax.swing.JSlider#addChangeListener(javax.swing.event.ChangeListener) JSlider.addChangeListener
*/
Modified: SwingME/src/net/yura/mobile/gui/components/Spinner.java
===================================================================
--- SwingME/src/net/yura/mobile/gui/components/Spinner.java 2021-12-10 16:56:38 UTC (rev 2609)
+++ SwingME/src/net/yura/mobile/gui/components/Spinner.java 2021-12-15 12:57:11 UTC (rev 2610)
@@ -67,7 +67,6 @@
*/
public Spinner(Vector vec, boolean cont) {
super((String)null);
- focusable = true;
setHorizontalAlignment(Graphics.HCENTER);
continuous = cont;
@@ -79,6 +78,10 @@
}
}
+ protected boolean getDefaultEnabled() {
+ return true;
+ }
+
/**
* @see javax.swing.JSpinner#addChangeListener(javax.swing.event.ChangeListener) JSpinner.addChangeListener
*/
Modified: SwingME/src/net/yura/mobile/gui/components/Table.java
===================================================================
--- SwingME/src/net/yura/mobile/gui/components/Table.java 2021-12-10 16:56:38 UTC (rev 2609)
+++ SwingME/src/net/yura/mobile/gui/components/Table.java 2021-12-15 12:57:11 UTC (rev 2610)
@@ -84,9 +84,6 @@
renderers = new Hashtable();
editors = new Hashtable();
- // should ALWAYS be selectable to that pointer event can give it focus
- focusable = true;
-
// default renderer
setDefaultRenderer(Object.class, new DefaultListCellRenderer());
setDefaultEditor(Object.class, new DefaultCellEditor( new TextField() ));
@@ -98,6 +95,11 @@
return "Table";
}
+ protected boolean getDefaultEnabled() {
+ // should ALWAYS be selectable to that pointer event can give it focus
+ return true;
+ }
+
/**
* @see javax.swing.JTable#JTable(java.util.Vector, java.util.Vector) JTable.JTable
*/
@@ -117,7 +119,6 @@
if (!done) {
super.breakOutAction(component, direction, scrolltothere,forceFocus);
}
-
}
private boolean moveSelection(int d) {
@@ -156,7 +157,6 @@
}
return false;
-
}
public void processMouseEvent(int type, int x, int y, KeyEvent keys) {
@@ -209,9 +209,7 @@
setSelectedCell(currentRow,currentCol);
}
}
-
}
-
}
/**
@@ -372,9 +370,7 @@
// this NEEDS to be after requestFocusInWindow, or focus will go somewhere else
removeAll();
-
}
-
}
public void paintComponent(Graphics2D g) {
@@ -448,7 +444,6 @@
Component comp = renderer.getListCellRendererComponent(this, object, (r*getColumnCount())+c, sel ,sel && isFocusOwner() );
return comp;
-
}
protected void workoutMinimumSize() {
@@ -551,7 +546,6 @@
if (renderer==null) renderer = (ListCellRenderer)renderers.get(Object.class);
return renderer;
-
}
public String getToolTipText() {
@@ -657,7 +651,6 @@
// else {
// return getDesktopPane().getWidth() /getColumnCount();
// }
-
}
/**
@@ -762,5 +755,4 @@
return dataVector.size();
}
-
}
Modified: SwingME/src/net/yura/mobile/gui/components/TextComponent.java
===================================================================
--- SwingME/src/net/yura/mobile/gui/components/TextComponent.java 2021-12-10 16:56:38 UTC (rev 2609)
+++ SwingME/src/net/yura/mobile/gui/components/TextComponent.java 2021-12-15 12:57:11 UTC (rev 2610)
@@ -125,6 +125,10 @@
setText(initialText);
}
+ protected boolean getDefaultEnabled() {
+ return true;
+ }
+
/**
* @see Label#getMargin()
* @see javax.swing.text.JTextComponent#getMargin() JTextComponent.getMargin
Modified: SwingME/src/net/yura/mobile/gui/components/TextPane.java
===================================================================
--- SwingME/src/net/yura/mobile/gui/components/TextPane.java 2021-12-10 16:56:38 UTC (rev 2609)
+++ SwingME/src/net/yura/mobile/gui/components/TextPane.java 2021-12-15 12:57:11 UTC (rev 2610)
@@ -48,6 +48,10 @@
return "TextPane";
}
+ protected boolean getDefaultEnabled() {
+ return true;
+ }
+
// Overwrites Component.paintComponent()
public void paintComponent(Graphics2D g) {
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|