[Git][java-team/sweethome3d-textures-editor][upstream] New upstream version 1.6

Markus Koschany gitlab at salsa.debian.org
Mon Jan 28 17:20:50 GMT 2019


Markus Koschany pushed to branch upstream at Debian Java Maintainers / sweethome3d-textures-editor


Commits:
61461be9 by Markus Koschany at 2019-01-28T17:14:56Z
New upstream version 1.6
- - - - -


30 changed files:

- .settings/org.eclipse.jdt.core.prefs
- README.TXT
- build.xml
- src/com/eteks/textureslibraryeditor/swing/EditorPane.java
- src/com/eteks/textureslibraryeditor/swing/TexturesLibraryTable.java
- src/com/eteks/textureslibraryeditor/swing/TexturesLibraryUserPreferencesPanel.java
- src/com/eteks/textureslibraryeditor/swing/TexturesPanel.java
- src/com/eteks/textureslibraryeditor/swing/package.properties
- src/com/eteks/textureslibraryeditor/swing/package_fr.properties
- src/com/eteks/textureslibraryeditor/viewcontroller/DefaultCategories.properties
- src/com/eteks/textureslibraryeditor/viewcontroller/DefaultCategories_bg.properties
- src/com/eteks/textureslibraryeditor/viewcontroller/DefaultCategories_cs.properties
- src/com/eteks/textureslibraryeditor/viewcontroller/DefaultCategories_de.properties
- src/com/eteks/textureslibraryeditor/viewcontroller/DefaultCategories_el.properties
- src/com/eteks/textureslibraryeditor/viewcontroller/DefaultCategories_es.properties
- src/com/eteks/textureslibraryeditor/viewcontroller/DefaultCategories_fi.properties
- src/com/eteks/textureslibraryeditor/viewcontroller/DefaultCategories_fr.properties
- src/com/eteks/textureslibraryeditor/viewcontroller/DefaultCategories_hu.properties
- src/com/eteks/textureslibraryeditor/viewcontroller/DefaultCategories_it.properties
- src/com/eteks/textureslibraryeditor/viewcontroller/DefaultCategories_ja.properties
- src/com/eteks/textureslibraryeditor/viewcontroller/DefaultCategories_nl.properties
- src/com/eteks/textureslibraryeditor/viewcontroller/DefaultCategories_pl.properties
- src/com/eteks/textureslibraryeditor/viewcontroller/DefaultCategories_pt.properties
- src/com/eteks/textureslibraryeditor/viewcontroller/DefaultCategories_pt_PT.properties
- src/com/eteks/textureslibraryeditor/viewcontroller/DefaultCategories_ru.properties
- src/com/eteks/textureslibraryeditor/viewcontroller/DefaultCategories_sv.properties
- src/com/eteks/textureslibraryeditor/viewcontroller/DefaultCategories_tr.properties
- src/com/eteks/textureslibraryeditor/viewcontroller/DefaultCategories_vi.properties
- src/com/eteks/textureslibraryeditor/viewcontroller/DefaultCategories_zh_CN.properties
- src/com/eteks/textureslibraryeditor/viewcontroller/DefaultCategories_zh_TW.properties


Changes:

=====================================
.settings/org.eclipse.jdt.core.prefs
=====================================
@@ -9,6 +9,7 @@ org.eclipse.jdt.core.compiler.debug.sourceFile=generate
 org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
 org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
 org.eclipse.jdt.core.compiler.source=1.5
+org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
 org.eclipse.jdt.core.formatter.align_type_members_on_columns=true
 org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
 org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
@@ -22,8 +23,10 @@ org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
 org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=49
 org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
 org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=20
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
 org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
 org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
 org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=18
 org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=18
 org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
@@ -33,6 +36,8 @@ org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration
 org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=2
 org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
 org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
+org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
 org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
 org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
 org.eclipse.jdt.core.formatter.blank_lines_after_package=1
@@ -53,6 +58,7 @@ org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
 org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
 org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
 org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
 org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
 org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
 org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
@@ -68,7 +74,7 @@ org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true
 org.eclipse.jdt.core.formatter.comment.indent_root_tags=true
 org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=do not insert
 org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
-org.eclipse.jdt.core.formatter.comment.line_length=80
+org.eclipse.jdt.core.formatter.comment.line_length=120
 org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
 org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
 org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
@@ -90,6 +96,7 @@ org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
 org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
 org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=true
 org.eclipse.jdt.core.formatter.indentation.size=8
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
 org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
 org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
 org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_member=insert
@@ -99,6 +106,7 @@ org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do
 org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
 org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
 org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
 org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
 org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
 org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
@@ -146,6 +154,7 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=inser
 org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
 org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
 org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
 org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
 org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
 org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -223,6 +232,7 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do n
 org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
 org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
 org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
 org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
 org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
 org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -277,16 +287,28 @@ org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
 org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
 org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
 org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.lineSplit=120
+org.eclipse.jdt.core.formatter.lineSplit=500
 org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
 org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
 org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
 org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
 org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
 org.eclipse.jdt.core.formatter.tabulation.char=space
 org.eclipse.jdt.core.formatter.tabulation.size=2
 org.eclipse.jdt.core.formatter.use_on_off_tags=false
 org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
 org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
 org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
 org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true


=====================================
README.TXT
=====================================
@@ -1,18 +1,18 @@
-TEXTURES LIBRARY EDITOR v 1.5
+TEXTURES LIBRARY EDITOR v 1.6
 -----------------------------
 
 This archive contains source code of the Textures Library Editor for Sweet Home 3D.
 
-You may also download this source code with the following CVS command:
+You may also download this source code with the following SVN command:
 
-cvs -z3 -d:pserver:anonymous at sweethome3d.cvs.sourceforge.net:/cvsroot/sweethome3d co -P -r V_1_5 TexturesLibraryEditor
+svn checkout https://svn.code.sf.net/p/sweethome3d/code/tags/V_1_6/TexturesLibraryEditor TexturesLibraryEditor
 
 
 As this project depends on Sweet Home 3D, download and install also Sweet Home 3D source code from 
-http://prdownloads.sourceforge.net/sweethome3d/SweetHome3D-5.1-src.zip 
-or with the following CVS command: 
+http://prdownloads.sourceforge.net/sweethome3d/SweetHome3D-6.1-src.zip 
+or with the following SVN command: 
 
-cvs -z3 -d:pserver:anonymous at sweethome3d.cvs.sourceforge.net:/cvsroot/sweethome3d co -P -r V_5_1 SweetHome3D
+svn checkout https://svn.code.sf.net/p/sweethome3d/code/tags/V_6_1/SweetHome3D SweetHome3D
 
 
 HOW TO USE THIS SOURCE CODE
@@ -23,7 +23,7 @@ you find this file may be compiled as an Eclipse project or with Ant.
 
 If you want to compile and test the Java files of this release 
 with Eclipse, please follow the next steps:
-1. install last JDK 5 or greater available at http://java.sun.com
+1. install last JDK 5 to 8 available at http://java.sun.com
 2. install Eclipse available at http://www.eclipse.org
 3. in Eclipse, select File > Import... menu
 4. in "Select an import source" list of Import dialog box, 


=====================================
build.xml
=====================================
@@ -10,7 +10,7 @@
 -->
 <project basedir="." default="texturesLibraryEditorJarExecutable" name="TexturesLibraryEditor">
   <!-- The current version of the Textures Library Editor -->
-  <property name="version" value="1.5"/>
+  <property name="version" value="1.6"/>
 
   <target name="texturesLibraryEditor" 
           description="Builds build/TexturesLibraryEditor.jar with all its classes">


=====================================
src/com/eteks/textureslibraryeditor/swing/EditorPane.java
=====================================
@@ -46,6 +46,7 @@ import com.eteks.sweethome3d.model.SelectionListener;
 import com.eteks.sweethome3d.model.UserPreferences;
 import com.eteks.sweethome3d.swing.ControllerAction;
 import com.eteks.sweethome3d.swing.ResourceAction;
+import com.eteks.sweethome3d.swing.SwingTools;
 import com.eteks.sweethome3d.swing.UnfocusableToolBar;
 import com.eteks.sweethome3d.tools.OperatingSystem;
 import com.eteks.sweethome3d.viewcontroller.HomeView.SaveAnswer;
@@ -56,7 +57,7 @@ import com.eteks.textureslibraryeditor.viewcontroller.EditorView;
 import com.eteks.textureslibraryeditor.viewcontroller.TexturesLibraryController;
 
 /**
- * The main pane that displays Textures Library Editor. 
+ * The main pane that displays Textures Library Editor.
  * @author Emmanuel Puybaret
  */
 public class EditorPane extends JRootPane implements EditorView {
@@ -67,18 +68,18 @@ public class EditorPane extends JRootPane implements EditorView {
                     EditorController controller) {
     this.preferences = preferences;
     createActions(controller, preferences);
-    
+
     // Layout components
     JComponent texturesLibraryView = (JComponent)controller.getTexturesLibraryController().getView();
     JScrollPane texturesLibraryScrollPane = new JScrollPane(texturesLibraryView);
     JViewport viewport = texturesLibraryScrollPane.getViewport();
-    viewport.setTransferHandler(texturesLibraryView.getTransferHandler());    
+    viewport.setTransferHandler(texturesLibraryView.getTransferHandler());
     JPopupMenu texturesLibraryPopupMenu = createTexturesLibraryPopupMenu(preferences, controller);
     texturesLibraryView.setComponentPopupMenu(texturesLibraryPopupMenu);
     viewport.setComponentPopupMenu(texturesLibraryPopupMenu);
     getContentPane().add(texturesLibraryScrollPane);
     getContentPane().add(createToolBar(preferences, controller), BorderLayout.NORTH);
-    
+
     // Map Enter accelerator of textures library to textures modification action
     texturesLibraryView.getInputMap().put(KeyStroke.getKeyStroke("ENTER"), ActionType.MODIFY_TEXTURES);
     texturesLibraryView.getActionMap().put(ActionType.MODIFY_TEXTURES, getActionMap().get(ActionType.MODIFY_TEXTURES));
@@ -90,47 +91,47 @@ public class EditorPane extends JRootPane implements EditorView {
       });
   }
 
-  private void createActions(EditorController controller, 
+  private void createActions(EditorController controller,
                              UserPreferences preferences) {
     ActionMap actionMap = getActionMap();
     try {
       actionMap.put(ActionType.NEW_LIBRARY, new ControllerAction(
-          preferences, EditorPane.class, ActionType.NEW_LIBRARY.name(), true, 
+          preferences, EditorPane.class, ActionType.NEW_LIBRARY.name(), true,
           controller, "newLibrary"));
       actionMap.put(ActionType.OPEN, new ControllerAction(
-          preferences, EditorPane.class, ActionType.OPEN.name(), true, 
+          preferences, EditorPane.class, ActionType.OPEN.name(), true,
           controller, "open"));
       actionMap.put(ActionType.MERGE, new ControllerAction(
-          preferences, EditorPane.class, ActionType.MERGE.name(), true, 
+          preferences, EditorPane.class, ActionType.MERGE.name(), true,
           controller, "merge"));
       actionMap.put(ActionType.SAVE, new ControllerAction(
-          preferences, EditorPane.class, ActionType.SAVE.name(), true, 
+          preferences, EditorPane.class, ActionType.SAVE.name(), true,
           controller, "save"));
       actionMap.put(ActionType.SAVE_AS, new ControllerAction(
-          preferences, EditorPane.class, ActionType.SAVE_AS.name(), true, 
+          preferences, EditorPane.class, ActionType.SAVE_AS.name(), true,
           controller, "saveAs"));
       actionMap.put(ActionType.PREFERENCES, new ControllerAction(
-          preferences, EditorPane.class, ActionType.PREFERENCES.name(), true, 
+          preferences, EditorPane.class, ActionType.PREFERENCES.name(), true,
           controller, "editPreferences"));
       actionMap.put(ActionType.EXIT, new ControllerAction(
-          preferences, EditorPane.class, ActionType.EXIT.name(), true, 
+          preferences, EditorPane.class, ActionType.EXIT.name(), true,
           controller, "exit"));
       TexturesLibraryController texturesLibraryController = controller.getTexturesLibraryController();
       actionMap.put(ActionType.IMPORT_TEXTURES, new ControllerAction(
-          preferences, EditorPane.class, ActionType.IMPORT_TEXTURES.name(), true, 
+          preferences, EditorPane.class, ActionType.IMPORT_TEXTURES.name(), true,
           texturesLibraryController, "importTextures"));
       boolean selectionEmpty = texturesLibraryController.getSelectedTextures().isEmpty();
       actionMap.put(ActionType.MODIFY_TEXTURES, new ControllerAction(
-          preferences, EditorPane.class, ActionType.MODIFY_TEXTURES.name(), !selectionEmpty, 
+          preferences, EditorPane.class, ActionType.MODIFY_TEXTURES.name(), !selectionEmpty,
           texturesLibraryController, "modifySelectedTextures"));
       actionMap.put(ActionType.DELETE, new ControllerAction(
-          preferences, EditorPane.class, ActionType.DELETE.name(), !selectionEmpty, 
+          preferences, EditorPane.class, ActionType.DELETE.name(), !selectionEmpty,
           texturesLibraryController, "deleteSelectedTextures"));
       actionMap.put(ActionType.SELECT_ALL, new ControllerAction(
-          preferences, EditorPane.class, ActionType.SELECT_ALL.name(), true, 
+          preferences, EditorPane.class, ActionType.SELECT_ALL.name(), true,
           texturesLibraryController, "selectAll"));
       actionMap.put(ActionType.ABOUT, new ControllerAction(
-          preferences, EditorPane.class, ActionType.ABOUT.name(), true, 
+          preferences, EditorPane.class, ActionType.ABOUT.name(), true,
           controller, "about"));
     } catch (NoSuchMethodException ex) {
       throw new IllegalArgumentException(ex);
@@ -165,13 +166,13 @@ public class EditorPane extends JRootPane implements EditorView {
   }
 
   /**
-   * Adds to tool bar the button matching the given <code>actionType</code>. 
+   * Adds to tool bar the button matching the given <code>actionType</code>.
    */
   private void addActionToToolBar(ActionType actionType,
                                   JToolBar toolBar) {
     Action action = new ResourceAction.ToolBarAction(getActionMap().get(actionType));
     if (OperatingSystem.isMacOSXLeopardOrSuperior() && OperatingSystem.isJavaVersionGreaterOrEqual("1.7")) {
-      // Add a button with higher insets to ensure the top and bottom of segmented buttons are correctly drawn 
+      // Add a button with higher insets to ensure the top and bottom of segmented buttons are correctly drawn
       toolBar.add(new JButton(new ResourceAction.ToolBarAction(action)) {
           @Override
           public Insets getInsets() {
@@ -215,18 +216,18 @@ public class EditorPane extends JRootPane implements EditorView {
 
   /**
    * Displays a dialog that lets user choose whether he wants to save before closing or not.
-   * @return {@link com.eteks.sweethome3d.viewcontroller.HomeView.SaveAnswer#SAVE} 
+   * @return {@link com.eteks.sweethome3d.viewcontroller.HomeView.SaveAnswer#SAVE}
    * if the user chose to save textures library,
-   * {@link com.eteks.sweethome3d.viewcontroller.HomeView.SaveAnswer#DO_NOT_SAVE} 
+   * {@link com.eteks.sweethome3d.viewcontroller.HomeView.SaveAnswer#DO_NOT_SAVE}
    * if he doesn't want to save textures library,
-   * or {@link com.eteks.sweethome3d.viewcontroller.HomeView.SaveAnswer#CANCEL} 
+   * or {@link com.eteks.sweethome3d.viewcontroller.HomeView.SaveAnswer#CANCEL}
    * if he doesn't want to continue current operation.
    */
   public SaveAnswer confirmSave(String homeName) {
     // Retrieve displayed text in buttons and message
     String message;
     if (homeName != null) {
-      message = this.preferences.getLocalizedString(EditorPane.class, "confirmSave.message", 
+      message = this.preferences.getLocalizedString(EditorPane.class, "confirmSave.message",
           "\"" + homeName + "\"");
     } else {
       message = this.preferences.getLocalizedString(EditorPane.class, "confirmSave.message", "");
@@ -236,7 +237,7 @@ public class EditorPane extends JRootPane implements EditorView {
     String doNotSave = this.preferences.getLocalizedString(EditorPane.class, "confirmSave.doNotSave");
     String cancel = this.preferences.getLocalizedString(EditorPane.class, "confirmSave.cancel");
 
-    switch (JOptionPane.showOptionDialog(SwingUtilities.getRootPane(this), message, title, 
+    switch (JOptionPane.showOptionDialog(SwingUtilities.getRootPane(this), message, title,
         JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE,
         null, new Object [] {save, doNotSave, cancel}, save)) {
       // Convert showOptionDialog answer to SaveAnswer enum constants
@@ -254,15 +255,18 @@ public class EditorPane extends JRootPane implements EditorView {
   public void showAboutDialog() {
     String messageFormat = this.preferences.getLocalizedString(EditorPane.class, "about.message");
     String version = this.preferences.getLocalizedString(EditorPane.class, "about.version");
-    String message = String.format(messageFormat, version, System.getProperty("java.version"));    
+    String message = String.format(messageFormat, version, System.getProperty("java.version"));
     // Use an uneditable editor pane to let user select text in dialog
     JEditorPane messagePane = new JEditorPane("text/html", message);
     messagePane.setOpaque(false);
     messagePane.setEditable(false);
+    if (SwingTools.getResolutionScale() != 1) {
+      messagePane.putClientProperty(JEditorPane.HONOR_DISPLAY_PROPERTIES, Boolean.TRUE);
+    }
     String title = this.preferences.getLocalizedString(EditorPane.class, "about.title");
     Icon   icon  = new ImageIcon(EditorPane.class.getResource(
         this.preferences.getLocalizedString(EditorPane.class, "about.icon")));
-    JOptionPane.showMessageDialog(SwingUtilities.getRootPane(this), 
+    JOptionPane.showMessageDialog(SwingUtilities.getRootPane(this),
         messagePane, title, JOptionPane.INFORMATION_MESSAGE, icon);
   }
 


=====================================
src/com/eteks/textureslibraryeditor/swing/TexturesLibraryTable.java
=====================================
@@ -65,6 +65,7 @@ import com.eteks.sweethome3d.model.SelectionEvent;
 import com.eteks.sweethome3d.model.SelectionListener;
 import com.eteks.sweethome3d.model.UserPreferences;
 import com.eteks.sweethome3d.swing.IconManager;
+import com.eteks.sweethome3d.swing.SwingTools;
 import com.eteks.sweethome3d.tools.OperatingSystem;
 import com.eteks.sweethome3d.tools.URLContent;
 import com.eteks.sweethome3d.viewcontroller.View;
@@ -86,6 +87,11 @@ public class TexturesLibraryTable extends JTable implements View {
                               TexturesLanguageController texturesLanguageController) {
     super(new TexturesLibraryTableModel(texturesLibrary, texturesLanguageController),
         new TexturesLibraryTableColumnModel(texturesLibrary, preferences, texturesLanguageController));
+    float resolutionScale = SwingTools.getResolutionScale();
+    if (resolutionScale != 1) {
+      // Adapt row height to specified resolution scale
+      setRowHeight(Math.round(getRowHeight() * resolutionScale));
+    }
     addTableHeaderListener();
     setAutoResizeMode(AUTO_RESIZE_OFF);
     updateTableColumnsWidth();
@@ -97,10 +103,10 @@ public class TexturesLibraryTable extends JTable implements View {
     }
     addUserPreferencesListener(preferences);
   }
-  
+
   /**
    * Adds a listener to <code>preferences</code> to repaint this table
-   * and its header when unit changes.  
+   * and its header when unit changes.
    */
   private void addUserPreferencesListener(UserPreferences preferences) {
     preferences.addPropertyChangeListener(
@@ -109,7 +115,7 @@ public class TexturesLibraryTable extends JTable implements View {
 
   /**
    * Preferences property listener bound to this table with a weak reference to avoid
-   * strong link between user preferences and this table.  
+   * strong link between user preferences and this table.
    */
   private static class UserPreferencesChangeListener implements PropertyChangeListener {
     private WeakReference<TexturesLibraryTable>  texturesLibraryTable;
@@ -117,7 +123,7 @@ public class TexturesLibraryTable extends JTable implements View {
     public UserPreferencesChangeListener(TexturesLibraryTable texturesTable) {
       this.texturesLibraryTable = new WeakReference<TexturesLibraryTable>(texturesTable);
     }
-    
+
     public void propertyChange(PropertyChangeEvent ev) {
       // If textures table was garbage collected, remove this listener from preferences
       TexturesLibraryTable texturesLibraryTable = this.texturesLibraryTable.get();
@@ -134,10 +140,10 @@ public class TexturesLibraryTable extends JTable implements View {
   /**
    * Adds selection listeners to this table.
    */
-  private void addSelectionListeners(final TexturesLibraryController controller) {   
+  private void addSelectionListeners(final TexturesLibraryController controller) {
     final SelectionListener controllerSelectionListener = new SelectionListener() {
         public void selectionChanged(SelectionEvent ev) {
-          setSelectedTextures(controller.getSelectedTextures());        
+          setSelectedTextures(controller.getSelectedTextures());
         }
       };
     this.tableSelectionListener = new ListSelectionListener () {
@@ -181,7 +187,7 @@ public class TexturesLibraryTable extends JTable implements View {
    * Adds a mouse listener on table header that will sort textures.
    */
   private void addTableHeaderListener() {
-    // Sort on click in column header 
+    // Sort on click in column header
     getTableHeader().addMouseListener(new MouseAdapter() {
         @Override
         public void mouseClicked(MouseEvent ev) {
@@ -193,7 +199,7 @@ public class TexturesLibraryTable extends JTable implements View {
           int columnIndex = getTableHeader().columnAtPoint(ev.getPoint());
           Object columnIdentifier = getColumnModel().getColumn(columnIndex).getIdentifier();
           if (columnIdentifier instanceof String) {
-            String propertyKey = (String)columnIdentifier; 
+            String propertyKey = (String)columnIdentifier;
             if (columnIdentifier.equals(tableModel.getSortProperty())) {
               if (tableModel.isDescendingOrder()) {
                 tableModel.setSortProperty(null);
@@ -212,7 +218,7 @@ public class TexturesLibraryTable extends JTable implements View {
   }
 
   /**
-   * Selects textures in table. 
+   * Selects textures in table.
    */
   private void setSelectedTextures(List<CatalogTexture> selectedTextures) {
     getSelectionModel().removeListSelectionListener(this.tableSelectionListener);
@@ -224,7 +230,7 @@ public class TexturesLibraryTable extends JTable implements View {
       if (texture instanceof CatalogTexture) {
         // Search index of texture in sorted table model
         int index = tableModel.getTextureIndex((CatalogTexture)texture);
-        // If the texture was found (during the addition of a texture to library, the model may not be updated yet) 
+        // If the texture was found (during the addition of a texture to library, the model may not be updated yet)
         if (index != -1) {
           addRowSelectionInterval(index, index);
           minIndex = Math.min(minIndex, index);
@@ -237,16 +243,16 @@ public class TexturesLibraryTable extends JTable implements View {
     }
     getSelectionModel().addListSelectionListener(this.tableSelectionListener);
   }
-  
+
   /**
    * Ensures the rectangle which displays rows from <code>minIndex</code> to <code>maxIndex</code> is visible.
    */
-  private void makeRowsVisible(int minRow, int maxRow) {    
-    // Compute the rectangle that includes a row 
+  private void makeRowsVisible(int minRow, int maxRow) {
+    // Compute the rectangle that includes a row
     Rectangle includingRectangle = getCellRect(minRow, 0, true);
     if (minRow != maxRow) {
       includingRectangle = includingRectangle.
-          union(getCellRect(maxRow, 0, true));      
+          union(getCellRect(maxRow, 0, true));
     }
     if (getAutoResizeMode() == AUTO_RESIZE_OFF) {
       int lastColumn = getColumnCount() - 1;
@@ -254,7 +260,7 @@ public class TexturesLibraryTable extends JTable implements View {
           union(getCellRect(minRow, lastColumn, true));
       if (minRow != maxRow) {
         includingRectangle = includingRectangle.
-            union(getCellRect(maxRow, lastColumn, true));      
+            union(getCellRect(maxRow, lastColumn, true));
       }
     }
     scrollRectToVisible(includingRectangle);
@@ -263,11 +269,11 @@ public class TexturesLibraryTable extends JTable implements View {
   /**
    * Adds a listener on textures language change to resort textures.
    */
-  private void addTexturesLanguageListener(TexturesLibrary texturesLibrary, 
+  private void addTexturesLanguageListener(TexturesLibrary texturesLibrary,
                                            TexturesLanguageController controller) {
     PropertyChangeListener listener = new PropertyChangeListener() {
         private boolean sorting = false;
-        
+
         public void propertyChange(PropertyChangeEvent ev) {
           if (!sorting) {
             // Postpone update in case of multiple localized data is set
@@ -305,7 +311,7 @@ public class TexturesLibraryTable extends JTable implements View {
       preferredWidth = Math.max(preferredWidth, column.getHeaderRenderer().getTableCellRendererComponent(
           this, column.getHeaderValue(), false, false, -1, columnIndex).getPreferredSize().width);
       for (int rowIndex = 0, m = tableModel.getRowCount(); rowIndex < m; rowIndex++) {
-        preferredWidth = Math.max(preferredWidth, 
+        preferredWidth = Math.max(preferredWidth,
             column.getCellRenderer().getTableCellRendererComponent(
                 this, tableModel.getValueAt(rowIndex, modelColumnIndex), false, false, -1, columnIndex).
                     getPreferredSize().width);
@@ -321,7 +327,7 @@ public class TexturesLibraryTable extends JTable implements View {
   @Override
   public String getToolTipText(MouseEvent ev) {
     int column = columnAtPoint(ev.getPoint());
-    if (column != -1 
+    if (column != -1
         && TexturesLibrary.TEXTURES_IMAGE_PROPERTY.equals(getColumnModel().getColumn(column).getIdentifier())) {
       int row = rowAtPoint(ev.getPoint());
       if (row != -1) {
@@ -341,9 +347,9 @@ public class TexturesLibraryTable extends JTable implements View {
             } else {
               height = Math.round(128f * image.getHeight() / image.getWidth());
               width = Math.round((float)height * image.getWidth() / image.getHeight());
-            }              
-            return "<html><table><tr><td width='128' height='128' align='center' valign='middle'>" 
-                + "<img width='" + width + "' height='" + height + "' src='" 
+            }
+            return "<html><table><tr><td width='128' height='128' align='center' valign='middle'>"
+                + "<img width='" + width + "' height='" + height + "' src='"
                 + ((URLContent)texture.getImage()).getURL() + "'></td></tr></table>";
           } catch (IOException ex) {
             return null;
@@ -358,18 +364,18 @@ public class TexturesLibraryTable extends JTable implements View {
   public Dimension getPreferredScrollableViewportSize() {
     return new Dimension(getPreferredSize().width, 400);
   }
-  
-  
+
+
   /**
    * Model used by textures table.
    */
   private static class TexturesLibraryTableModel extends AbstractTableModel {
     private final TexturesLibrary              texturesLibrary;
-    private final TexturesLanguageController   controller; 
+    private final TexturesLanguageController   controller;
     private List<CatalogTexture>               sortedTextures;
     private String                             sortProperty;
     private boolean                            descendingOrder;
-    
+
     public TexturesLibraryTableModel(TexturesLibrary texturesLibrary,
                                       TexturesLanguageController controller) {
       this.texturesLibrary = texturesLibrary;
@@ -407,44 +413,44 @@ public class TexturesLibraryTable extends JTable implements View {
          * If <code>texture</code> isn't added to textures table, the returned value is
          * equals to the insertion index where texture should be added.
          */
-        private int getTextureInsertionIndex(CatalogTexture texture, 
-                                                      TexturesLibrary texturesLibrary, 
+        private int getTextureInsertionIndex(CatalogTexture texture,
+                                                      TexturesLibrary texturesLibrary,
                                                       int textureIndex) {
           if (sortProperty == null) {
             return textureIndex;
-          } 
-          // Default case when texture is included and textures is  sorted 
+          }
+          // Default case when texture is included and textures is  sorted
           int sortedIndex = Collections.binarySearch(sortedTextures, texture, getTexturesComparator(sortProperty));
           if (sortedIndex >= 0) {
             return sortedIndex;
           } else {
             return -(sortedIndex + 1);
-          }              
+          }
         }
 
         /**
          * Returns the index of an existing <code>texture</code> in textures table, with a default index
          * of <code>textureIndex</code> if textures isn't sorted.
          */
-        private int getTextureDeletionIndex(CatalogTexture texture, 
-                                                     TexturesLibrary texturesLibrary, 
+        private int getTextureDeletionIndex(CatalogTexture texture,
+                                                     TexturesLibrary texturesLibrary,
                                                      int textureIndex) {
           if (sortProperty == null) {
             return textureIndex;
-          } 
-          return getTextureIndex(texture);              
+          }
+          return getTextureIndex(texture);
         }
       });
     }
 
     @Override
     public String getColumnName(int columnIndex) {
-      // Column name is set by TableColumn instances themselves 
+      // Column name is set by TableColumn instances themselves
       return null;
     }
 
     public int getColumnCount() {
-      // Column count is set by TableColumnModel itself 
+      // Column count is set by TableColumnModel itself
       return 0;
     }
 
@@ -458,7 +464,7 @@ public class TexturesLibraryTable extends JTable implements View {
     }
 
     /**
-     * Returns the index of <code>texture</code> in textures table, or -1. 
+     * Returns the index of <code>texture</code> in textures table, or -1.
      */
     public int getTextureIndex(CatalogTexture searchedTexture) {
       for (int i = 0, n = this.sortedTextures.size(); i < n; i++) {
@@ -474,7 +480,7 @@ public class TexturesLibraryTable extends JTable implements View {
      * Sorts textures.
      */
     public void sortTextures() {
-      int previousRowCount = this.sortedTextures != null 
+      int previousRowCount = this.sortedTextures != null
           ? this.sortedTextures.size()
           : 0;
       List<CatalogTexture> libraryTextures = this.texturesLibrary.getTextures();
@@ -482,9 +488,9 @@ public class TexturesLibraryTable extends JTable implements View {
       // Sort it if necessary
       if (this.sortProperty != null) {
         Comparator<CatalogTexture> texturesComparator = getTexturesComparator(this.sortProperty);
-        Collections.sort(this.sortedTextures, texturesComparator);         
+        Collections.sort(this.sortedTextures, texturesComparator);
       }
-      
+
       if (previousRowCount != this.sortedTextures.size()) {
         fireTableDataChanged();
       } else {
@@ -501,7 +507,7 @@ public class TexturesLibraryTable extends JTable implements View {
               if (texture1.getId() == null) {
                 return -1;
               } else if (texture2.getId() == null) {
-                return 1; 
+                return 1;
               } else {
                 return collator.compare(texture1.getId(), texture2.getId());
               }
@@ -536,7 +542,7 @@ public class TexturesLibraryTable extends JTable implements View {
       } else if (TexturesLibrary.TEXTURES_WIDTH_PROPERTY.equals(propertyKey)) {
         texturesComparator = new Comparator<CatalogTexture>() {
             public int compare(CatalogTexture texture1, CatalogTexture texture2) {
-              return texture1.getWidth() < texture2.getWidth()  
+              return texture1.getWidth() < texture2.getWidth()
                   ? -1
                   : (texture1.getWidth() == texture2.getWidth()
                       ? 0 : 1);
@@ -545,7 +551,7 @@ public class TexturesLibraryTable extends JTable implements View {
       } else if (TexturesLibrary.TEXTURES_HEIGHT_PROPERTY.equals(propertyKey)) {
         texturesComparator = new Comparator<CatalogTexture>() {
             public int compare(CatalogTexture texture1, CatalogTexture texture2) {
-              return texture1.getHeight() < texture2.getHeight()  
+              return texture1.getHeight() < texture2.getHeight()
                   ? -1
                   : (texture1.getHeight() == texture2.getHeight()
                       ? 0 : 1);
@@ -582,24 +588,24 @@ public class TexturesLibraryTable extends JTable implements View {
       this.sortProperty = sortProperty;
       sortTextures();
     }
-    
+
     public boolean isDescendingOrder() {
       return this.descendingOrder;
     }
-    
+
     public void setDescendingOrder(boolean descendingOrder) {
       this.descendingOrder = descendingOrder;
       sortTextures();
     }
   }
 
-  
+
   /**
    * Column table model used by textures library table.
    */
   private static class TexturesLibraryTableColumnModel extends DefaultTableColumnModel {
-    public TexturesLibraryTableColumnModel(TexturesLibrary texturesLibrary, 
-                                            TexturesLibraryUserPreferences preferences, 
+    public TexturesLibraryTableColumnModel(TexturesLibrary texturesLibrary,
+                                            TexturesLibraryUserPreferences preferences,
                                             TexturesLanguageController controller) {
       createColumns(texturesLibrary, preferences, controller);
       addLanguageListener(preferences);
@@ -608,8 +614,8 @@ public class TexturesLibraryTable extends JTable implements View {
     /**
      * Creates the list of available columns from textures sortable properties.
      */
-    private void createColumns(TexturesLibrary texturesLibrary, 
-                               TexturesLibraryUserPreferences preferences, 
+    private void createColumns(TexturesLibrary texturesLibrary,
+                               TexturesLibraryUserPreferences preferences,
                                TexturesLanguageController controller) {
         // Create the list of custom columns
       TableCellRenderer headerRenderer = getHeaderRenderer();
@@ -629,13 +635,13 @@ public class TexturesLibraryTable extends JTable implements View {
      * column names when preferred language changes.
      */
     private void addLanguageListener(UserPreferences preferences) {
-      preferences.addPropertyChangeListener(UserPreferences.Property.LANGUAGE, 
+      preferences.addPropertyChangeListener(UserPreferences.Property.LANGUAGE,
           new LanguageChangeListener(this));
     }
 
     /**
      * Preferences property listener bound to this component with a weak reference to avoid
-     * strong link between preferences and this component.  
+     * strong link between preferences and this component.
      */
     private static class LanguageChangeListener implements PropertyChangeListener {
       private WeakReference<TexturesLibraryTableColumnModel> texturesTableColumnModel;
@@ -643,14 +649,14 @@ public class TexturesLibraryTable extends JTable implements View {
       public LanguageChangeListener(TexturesLibraryTableColumnModel texturesTable) {
         this.texturesTableColumnModel = new WeakReference<TexturesLibraryTableColumnModel>(texturesTable);
       }
-      
+
       public void propertyChange(PropertyChangeEvent ev) {
         // If textures table column model was garbage collected, remove this listener from preferences
         TexturesLibraryTableColumnModel texturesTableColumnModel = this.texturesTableColumnModel.get();
         UserPreferences preferences = (UserPreferences)ev.getSource();
         if (texturesTableColumnModel == null) {
           preferences.removePropertyChangeListener(UserPreferences.Property.LANGUAGE, this);
-        } else {          
+        } else {
           // Change column name and renderer from current locale
           for (int i = 0; i < texturesTableColumnModel.getColumnCount(); i++) {
             TableColumn tableColumn = texturesTableColumnModel.getColumn(i);
@@ -667,11 +673,11 @@ public class TexturesLibraryTable extends JTable implements View {
         }
       }
     }
-    
+
     /**
      * Returns localized column names.
      */
-    private String getColumnName(String propertyKey, 
+    private String getColumnName(String propertyKey,
                                  UserPreferences preferences) {
       if (TexturesLibrary.TEXTURES_ID_PROPERTY.equals(propertyKey)) {
         return preferences.getLocalizedString(TexturesLibraryTable.class, "idColumn");
@@ -691,7 +697,7 @@ public class TexturesLibraryTable extends JTable implements View {
         throw new IllegalArgumentException("Unknown key " + propertyKey);
       }
     }
-    
+
     /**
      * Returns the preferred width of a column.
      */
@@ -713,21 +719,21 @@ public class TexturesLibraryTable extends JTable implements View {
         throw new IllegalArgumentException("Unknown key " + propertyKey);
       }
     }
-    
+
     /**
      * Returns column renderers.
      */
-    private TableCellRenderer getColumnRenderer(String propertyKey, 
-                                                TexturesLibrary texturesLibrary, 
-                                                UserPreferences preferences, 
+    private TableCellRenderer getColumnRenderer(String propertyKey,
+                                                TexturesLibrary texturesLibrary,
+                                                UserPreferences preferences,
                                                 TexturesLanguageController controller) {
       if (TexturesLibrary.TEXTURES_ID_PROPERTY.equals(propertyKey)
           || TexturesLibrary.TEXTURES_NAME_PROPERTY.equals(propertyKey)
           || TexturesLibrary.TEXTURES_CATEGORY_PROPERTY.equals(propertyKey)
           || TexturesLibrary.TEXTURES_CREATOR_PROPERTY.equals(propertyKey)) {
-        return getStringRenderer(propertyKey, texturesLibrary, controller); 
+        return getStringRenderer(propertyKey, texturesLibrary, controller);
       } else if (TexturesLibrary.TEXTURES_IMAGE_PROPERTY.equals(propertyKey)) {
-        return getImageRenderer(propertyKey); 
+        return getImageRenderer(propertyKey);
       } else if (TexturesLibrary.TEXTURES_WIDTH_PROPERTY.equals(propertyKey)
           || TexturesLibrary.TEXTURES_HEIGHT_PROPERTY.equals(propertyKey)) {
         return getSizeRenderer(propertyKey, preferences);
@@ -737,10 +743,10 @@ public class TexturesLibraryTable extends JTable implements View {
     }
 
     /**
-     * Returns a renderer that displays a string property of a texture of textures. 
+     * Returns a renderer that displays a string property of a texture of textures.
      */
-    private TableCellRenderer getStringRenderer(final String propertyKey, 
-                                                final TexturesLibrary texturesLibrary, 
+    private TableCellRenderer getStringRenderer(final String propertyKey,
+                                                final TexturesLibrary texturesLibrary,
                                                 final TexturesLanguageController controller) {
       if (TexturesLibrary.TEXTURES_ID_PROPERTY.equals(propertyKey)) {
         return new DefaultTableCellRenderer() {
@@ -748,7 +754,7 @@ public class TexturesLibraryTable extends JTable implements View {
             public Component getTableCellRendererComponent(JTable table, Object value,
                 boolean isSelected, boolean hasFocus, int row, int column) {
               return super.getTableCellRendererComponent(
-                  table, ((CatalogTexture)value).getId(), isSelected, hasFocus, row, column); 
+                  table, ((CatalogTexture)value).getId(), isSelected, hasFocus, row, column);
             }
           };
       } else if (TexturesLibrary.TEXTURES_NAME_PROPERTY.equals(propertyKey)) {
@@ -772,7 +778,7 @@ public class TexturesLibraryTable extends JTable implements View {
               String textureCategory = (String)texturesLibrary.getTextureLocalizedData(
                     texture, controller.getTexturesLangauge(), propertyKey, texture.getCategory().getName());
               return super.getTableCellRendererComponent(
-                  table, textureCategory, isSelected, hasFocus, row, column); 
+                  table, textureCategory, isSelected, hasFocus, row, column);
             }
           };
       } else if (TexturesLibrary.TEXTURES_CREATOR_PROPERTY.equals(propertyKey)) {
@@ -781,27 +787,27 @@ public class TexturesLibraryTable extends JTable implements View {
             public Component getTableCellRendererComponent(JTable table, Object value,
                 boolean isSelected, boolean hasFocus, int row, int column) {
               return super.getTableCellRendererComponent(
-                  table, ((CatalogTexture)value).getCreator(), isSelected, hasFocus, row, column); 
+                  table, ((CatalogTexture)value).getCreator(), isSelected, hasFocus, row, column);
             }
           };
       } else {
-          throw new IllegalArgumentException(propertyKey + " column not a string column"); 
+          throw new IllegalArgumentException(propertyKey + " column not a string column");
       }
     }
 
     /**
-     * Returns a renderer that displays the icons of a texture of textures. 
+     * Returns a renderer that displays the icons of a texture of textures.
      */
     private TableCellRenderer getImageRenderer(final String propertyKey) {
-      return new DefaultTableCellRenderer() { 
+      return new DefaultTableCellRenderer() {
         @Override
-        public Component getTableCellRendererComponent(JTable table, 
-             Object value, boolean isSelected, boolean hasFocus, 
+        public Component getTableCellRendererComponent(JTable table,
+             Object value, boolean isSelected, boolean hasFocus,
              int row, int column) {
-          CatalogTexture texture = (CatalogTexture)value; 
+          CatalogTexture texture = (CatalogTexture)value;
           JLabel label = (JLabel)super.getTableCellRendererComponent(
-            table, "", isSelected, hasFocus, row, column); 
-          Content iconContent = texture.getImage(); 
+            table, "", isSelected, hasFocus, row, column);
+          Content iconContent = texture.getImage();
           if (iconContent != null) {
             label.setIcon(IconManager.getInstance().getIcon(
                 iconContent, table.getRowHeight(), table));
@@ -815,15 +821,15 @@ public class TexturesLibraryTable extends JTable implements View {
     }
 
     /**
-     * Returns a renderer that converts the displayed <code>property</code> of a texture of textures 
-     * to inch in case preferences unit us equal to INCH. 
+     * Returns a renderer that converts the displayed <code>property</code> of a texture of textures
+     * to inch in case preferences unit us equal to INCH.
      */
     private TableCellRenderer getSizeRenderer(String propertyKey,
                                               final UserPreferences preferences) {
       // Renderer super class used to display sizes
       class SizeRenderer extends DefaultTableCellRenderer {
-        public Component getTableCellRendererComponent(JTable table, 
-             Object value, boolean isSelected, boolean hasFocus, 
+        public Component getTableCellRendererComponent(JTable table,
+             Object value, boolean isSelected, boolean hasFocus,
              int row, int column) {
           value = preferences.getLengthUnit().getFormat().format((Float)value);
           setHorizontalAlignment(JLabel.RIGHT);
@@ -831,22 +837,22 @@ public class TexturesLibraryTable extends JTable implements View {
               table, value, isSelected, hasFocus, row, column);
         }
       };
-      
+
       if (TexturesLibrary.TEXTURES_WIDTH_PROPERTY.equals(propertyKey)) {
         return new SizeRenderer() {
             @Override
-            public Component getTableCellRendererComponent(JTable table, 
+            public Component getTableCellRendererComponent(JTable table,
                 Object value, boolean isSelected, boolean hasFocus, int row, int column) {
-              return super.getTableCellRendererComponent(table, 
+              return super.getTableCellRendererComponent(table,
                   ((CatalogTexture)value).getWidth(), isSelected, hasFocus, row, column);
             }
           };
       } else if (TexturesLibrary.TEXTURES_HEIGHT_PROPERTY.equals(propertyKey)) {
         return new SizeRenderer() {
             @Override
-            public Component getTableCellRendererComponent(JTable table, 
+            public Component getTableCellRendererComponent(JTable table,
                 Object value, boolean isSelected, boolean hasFocus, int row, int column) {
-              return super.getTableCellRendererComponent(table, 
+              return super.getTableCellRendererComponent(table,
                   ((CatalogTexture)value).getHeight(), isSelected, hasFocus, row, column);
             }
           };
@@ -856,17 +862,17 @@ public class TexturesLibraryTable extends JTable implements View {
     }
 
     /**
-     * Returns column header renderer that displays an ascending or a descending icon 
+     * Returns column header renderer that displays an ascending or a descending icon
      * when column is sorted, beside column name.
      */
     private TableCellRenderer getHeaderRenderer() {
       // Return a table renderer that displays the icon matching current sort
       return new TableCellRenderer() {
-          private TableCellRenderer headerRenderer;        
+          private TableCellRenderer headerRenderer;
           private ImageIcon ascendingSortIcon = new ImageIcon(getClass().getResource("resources/ascending.png"));
           private ImageIcon descendingSortIcon = new ImageIcon(getClass().getResource("resources/descending.png"));
-          
-          public Component getTableCellRendererComponent(JTable table, 
+
+          public Component getTableCellRendererComponent(JTable table,
                Object value, boolean isSelected, boolean hasFocus, int row, int column) {
             if (this.headerRenderer == null) {
               this.headerRenderer = table.getTableHeader().getDefaultRenderer();
@@ -892,13 +898,13 @@ public class TexturesLibraryTable extends JTable implements View {
     }
   }
 
-  
+
   /**
    * Table transfer handler.
    */
   private class TableTransferHandler extends TransferHandler {
     private final TexturesLibraryController texturesController;
-    
+
     /**
      * Creates a handler able to receive textures files.
      */
@@ -912,7 +918,7 @@ public class TexturesLibraryTable extends JTable implements View {
     }
 
     /**
-     * Returns <code>true</code> if flavors contains 
+     * Returns <code>true</code> if flavors contains
      * <code>DataFlavor.javaFileListFlavor</code> flavor.
      */
     @Override
@@ -930,12 +936,12 @@ public class TexturesLibraryTable extends JTable implements View {
       if (canImport(destination, transferable.getTransferDataFlavors())) {
         try {
           List<File> files = (List<File>)transferable.getTransferData(DataFlavor.javaFileListFlavor);
-          final List<String> importableTextures = new ArrayList<String>();        
+          final List<String> importableTextures = new ArrayList<String>();
           for (File file : files) {
             if (!file.isDirectory()) {
               String absolutePath = file.getAbsolutePath();
               importableTextures.add(absolutePath);
-            }        
+            }
           }
           EventQueue.invokeLater(new Runnable() {
               public void run() {


=====================================
src/com/eteks/textureslibraryeditor/swing/TexturesLibraryUserPreferencesPanel.java
=====================================
@@ -67,7 +67,7 @@ public class TexturesLibraryUserPreferencesPanel extends UserPreferencesPanel {
   /**
    * Creates and initializes components and their models.
    */
-  private void createComponents(UserPreferences preferences, 
+  private void createComponents(UserPreferences preferences,
                                 final TexturesLibraryUserPreferencesController controller) {
     abstract class DocumentChangeListener implements DocumentListener {
       public void insertUpdate(DocumentEvent ev) {
@@ -78,7 +78,7 @@ public class TexturesLibraryUserPreferencesPanel extends UserPreferencesPanel {
         changedUpdate(ev);
       }
     };
-    
+
     if (controller.isPropertyEditable(TexturesLibraryUserPreferencesController.Property.DEFAULT_CREATOR)) {
       // Create default author label and its text field bound to DEFAULT_CREATOR controller property
       this.defaultCreatorLabel = new JLabel(SwingTools.getLocalizedLabelText(preferences, TexturesLibraryUserPreferencesPanel.class, "defaultCreatorLabel.text"));
@@ -95,7 +95,7 @@ public class TexturesLibraryUserPreferencesPanel extends UserPreferencesPanel {
       this.defaultCreatorTextField.getDocument().addDocumentListener(new DocumentChangeListener() {
           public void changedUpdate(DocumentEvent ev) {
             controller.removePropertyChangeListener(TexturesLibraryUserPreferencesController.Property.DEFAULT_CREATOR, creatorChangeListener);
-            String defaultCreator = defaultCreatorTextField.getText(); 
+            String defaultCreator = defaultCreatorTextField.getText();
             if (defaultCreator == null || defaultCreator.trim().length() == 0) {
               controller.setDefaultCreator(null);
             } else {
@@ -105,19 +105,19 @@ public class TexturesLibraryUserPreferencesPanel extends UserPreferencesPanel {
           }
         });
     }
-    
+
     if (controller.isPropertyEditable(TexturesLibraryUserPreferencesController.Property.OFFLINE_TEXTURES_LIBRARY)) {
       // Create offline label and check box bound to controller OFFLINE_TEXTURES_LIBRARY property
       this.offlineTexturesLibraryLabel = new JLabel(preferences.getLocalizedString(
           TexturesLibraryUserPreferencesPanel.class, "offlineTexturesLibraryLabel.text"));
-      this.offlineTexturesLibraryCheckBox = new JCheckBox(SwingTools.getLocalizedLabelText(preferences, 
+      this.offlineTexturesLibraryCheckBox = new JCheckBox(SwingTools.getLocalizedLabelText(preferences,
           TexturesLibraryUserPreferencesPanel.class, "offlineTexturesLibraryCheckBox.text"), controller.isTexturesLibraryOffline());
       this.offlineTexturesLibraryCheckBox.addItemListener(new ItemListener() {
           public void itemStateChanged(ItemEvent ev) {
             controller.setTexturesLibraryOffline(offlineTexturesLibraryCheckBox.isSelected());
           }
         });
-      controller.addPropertyChangeListener(TexturesLibraryUserPreferencesController.Property.OFFLINE_TEXTURES_LIBRARY, 
+      controller.addPropertyChangeListener(TexturesLibraryUserPreferencesController.Property.OFFLINE_TEXTURES_LIBRARY,
           new PropertyChangeListener() {
             public void propertyChange(PropertyChangeEvent ev) {
               boolean texturesLibraryOffline = controller.isTexturesLibraryOffline();
@@ -149,7 +149,7 @@ public class TexturesLibraryUserPreferencesPanel extends UserPreferencesPanel {
       this.texturesResourcesLocalDirectoryTextField.getDocument().addDocumentListener(new DocumentChangeListener() {
           public void changedUpdate(DocumentEvent ev) {
             controller.removePropertyChangeListener(TexturesLibraryUserPreferencesController.Property.TEXTURES_RESOURCES_LOCAL_DIRECTORY, localDirectoryChangeListener);
-            String texturesResourcesLocalDirectory = texturesResourcesLocalDirectoryTextField.getText(); 
+            String texturesResourcesLocalDirectory = texturesResourcesLocalDirectoryTextField.getText();
             if (texturesResourcesLocalDirectory == null || texturesResourcesLocalDirectory.trim().length() == 0) {
               controller.setTexturesResourcesLocalDirectory(null);
             } else {
@@ -177,7 +177,7 @@ public class TexturesLibraryUserPreferencesPanel extends UserPreferencesPanel {
       this.texturesResourcesRemoteUrlBaseTextField.getDocument().addDocumentListener(new DocumentChangeListener() {
           public void changedUpdate(DocumentEvent ev) {
             controller.removePropertyChangeListener(TexturesLibraryUserPreferencesController.Property.TEXTURES_RESOURCES_REMOTE_URL_BASE, urlBaseChangeListener);
-            String texturesResourcesRemoteUrlBase = texturesResourcesRemoteUrlBaseTextField.getText(); 
+            String texturesResourcesRemoteUrlBase = texturesResourcesRemoteUrlBaseTextField.getText();
             if (texturesResourcesRemoteUrlBase == null || texturesResourcesRemoteUrlBase.trim().length() == 0) {
               controller.setTexturesResourcesRemoteURLBase(null);
             } else {
@@ -187,8 +187,8 @@ public class TexturesLibraryUserPreferencesPanel extends UserPreferencesPanel {
           }
         });
     }
-  }        
-  
+  }
+
   /**
    * Sets components mnemonics and label / component associations.
    */
@@ -215,46 +215,47 @@ public class TexturesLibraryUserPreferencesPanel extends UserPreferencesPanel {
       }
     }
   }
-  
+
   /**
-   * Layouts panel components in panel with their labels. 
+   * Layouts panel components in panel with their labels.
    */
   private void layoutComponents() {
-    int labelAlignment = OperatingSystem.isMacOSX() 
+    int labelAlignment = OperatingSystem.isMacOSX()
         ? GridBagConstraints.LINE_END
         : GridBagConstraints.LINE_START;
-    Insets labelInsets = new Insets(0, 0, 5, 5);
-    Insets componentInsets = new Insets(0, 0, 5, 0);
+    int gap = Math.round(5 * SwingTools.getResolutionScale());
+    Insets labelInsets = new Insets(0, 0, gap, gap);
+    Insets componentInsets = new Insets(0, 0, gap, 0);
     if (this.defaultCreatorLabel != null) {
       add(this.defaultCreatorLabel, new GridBagConstraints(
-          0, 100, 1, 1, 0, 0, labelAlignment, 
+          0, 100, 1, 1, 0, 0, labelAlignment,
           GridBagConstraints.NONE, labelInsets, 0, 0));
       add(this.defaultCreatorTextField, new GridBagConstraints(
-          1, 100, 2, 1, 0, 0, GridBagConstraints.LINE_START, 
+          1, 100, 2, 1, 0, 0, GridBagConstraints.LINE_START,
           GridBagConstraints.HORIZONTAL, componentInsets, 0, 0));
     }
     if (this.offlineTexturesLibraryLabel != null) {
       add(this.offlineTexturesLibraryLabel, new GridBagConstraints(
-          0, 101, 1, 1, 0, 0, labelAlignment, 
+          0, 101, 1, 1, 0, 0, labelAlignment,
           GridBagConstraints.NONE, labelInsets, 0, 0));
       add(this.offlineTexturesLibraryCheckBox, new GridBagConstraints(
-          1, 101, 2, 1, 0, 0, GridBagConstraints.LINE_START, 
+          1, 101, 2, 1, 0, 0, GridBagConstraints.LINE_START,
           GridBagConstraints.NONE, componentInsets, 0, 0));
     }
     if (this.texturesResourcesLocalDirectoryLabel != null) {
       add(this.texturesResourcesLocalDirectoryLabel, new GridBagConstraints(
-          0, 102, 1, 1, 0, 0, labelAlignment, 
+          0, 102, 1, 1, 0, 0, labelAlignment,
           GridBagConstraints.NONE, labelInsets, 0, 0));
       add(this.texturesResourcesLocalDirectoryTextField, new GridBagConstraints(
-          1, 102, 2, 1, 0, 0, GridBagConstraints.LINE_START, 
+          1, 102, 2, 1, 0, 0, GridBagConstraints.LINE_START,
           GridBagConstraints.HORIZONTAL, componentInsets, 0, 0));
     }
     if (this.texturesResourcesRemoteUrlBaseLabel != null) {
       add(this.texturesResourcesRemoteUrlBaseLabel, new GridBagConstraints(
-          0, 103, 1, 1, 0, 0, labelAlignment, 
-          GridBagConstraints.NONE, new Insets(0, 0, 0, 5), 0, 0));
+          0, 103, 1, 1, 0, 0, labelAlignment,
+          GridBagConstraints.NONE, new Insets(0, 0, 0, gap), 0, 0));
       add(this.texturesResourcesRemoteUrlBaseTextField, new GridBagConstraints(
-          1, 103, 2, 1, 0, 0, GridBagConstraints.LINE_START, 
+          1, 103, 2, 1, 0, 0, GridBagConstraints.LINE_START,
           GridBagConstraints.HORIZONTAL, new Insets(0, 0, 0, 0), 0, 0));
     }
   }


=====================================
src/com/eteks/textureslibraryeditor/swing/TexturesPanel.java
=====================================
@@ -1,5 +1,5 @@
 /*
- * TexturesPanel.java 
+ * TexturesPanel.java
  *
  * Textures Library Editor, Copyright (c) 2012 Emmanuel PUYBARET / eTeks <info at eteks.com>
  *
@@ -87,7 +87,7 @@ public class TexturesPanel extends JPanel implements DialogView {
   private String                   dialogTitle;
 
   /**
-   * Creates a panel that displays catalog textures data according to the units 
+   * Creates a panel that displays catalog textures data according to the units
    * set in <code>preferences</code>.
    * @param preferences user preferences
    * @param controller the controller of this panel
@@ -104,11 +104,11 @@ public class TexturesPanel extends JPanel implements DialogView {
   /**
    * Creates and initializes components and spinners model.
    */
-  private void createComponents(final UserPreferences preferences, 
+  private void createComponents(final UserPreferences preferences,
                                 final TexturesController controller) {
-    // Get unit name matching current unit 
+    // Get unit name matching current unit
     String unitName = preferences.getLengthUnit().getName();
-    
+
     if (this.controller.isPropertyEditable(TexturesController.Property.ID)) {
       // Create id label and its text field bound to ID controller property
       this.idLabel = new JLabel(SwingTools.getLocalizedLabelText(preferences, TexturesPanel.class, "idLabel.text"));
@@ -125,7 +125,7 @@ public class TexturesPanel extends JPanel implements DialogView {
       this.idTextField.getDocument().addDocumentListener(new DocumentListener() {
           public void changedUpdate(DocumentEvent ev) {
             controller.removePropertyChangeListener(TexturesController.Property.ID, idChangeListener);
-            String id = idTextField.getText(); 
+            String id = idTextField.getText();
             if (id == null || id.trim().length() == 0) {
               controller.setId(null);
             } else {
@@ -133,17 +133,17 @@ public class TexturesPanel extends JPanel implements DialogView {
             }
             controller.addPropertyChangeListener(TexturesController.Property.ID, idChangeListener);
           }
-    
+
           public void insertUpdate(DocumentEvent ev) {
             changedUpdate(ev);
           }
-    
+
           public void removeUpdate(DocumentEvent ev) {
             changedUpdate(ev);
           }
         });
     }
-        
+
     if (this.controller.isPropertyEditable(TexturesController.Property.NAME)) {
       // Create name label and its text field bound to NAME controller property
       this.nameLabel = new JLabel(SwingTools.getLocalizedLabelText(preferences, TexturesPanel.class, "nameLabel.text"));
@@ -160,7 +160,7 @@ public class TexturesPanel extends JPanel implements DialogView {
       this.nameTextField.getDocument().addDocumentListener(new DocumentListener() {
           public void changedUpdate(DocumentEvent ev) {
             controller.removePropertyChangeListener(TexturesController.Property.NAME, nameChangeListener);
-            String name = nameTextField.getText(); 
+            String name = nameTextField.getText();
             if (name == null || name.trim().length() == 0) {
               controller.setName(null);
             } else {
@@ -168,20 +168,20 @@ public class TexturesPanel extends JPanel implements DialogView {
             }
             controller.addPropertyChangeListener(TexturesController.Property.NAME, nameChangeListener);
           }
-    
+
           public void insertUpdate(DocumentEvent ev) {
             changedUpdate(ev);
           }
-    
+
           public void removeUpdate(DocumentEvent ev) {
             changedUpdate(ev);
           }
         });
     }
-    
+
     if (this.controller.isPropertyEditable(TexturesController.Property.CATEGORY)) {
-      this.categoryLabel = new JLabel(SwingTools.getLocalizedLabelText(preferences, 
-          TexturesPanel.class, "categoryLabel.text")); 
+      this.categoryLabel = new JLabel(SwingTools.getLocalizedLabelText(preferences,
+          TexturesPanel.class, "categoryLabel.text"));
       final List<TexturesCategory> categories = controller.getAvailableCategories();
       List<TexturesCategory> categoriesList = new ArrayList<TexturesCategory>(categories);
       final boolean nullableComboBox = controller.getCategory() == null;
@@ -189,7 +189,7 @@ public class TexturesPanel extends JPanel implements DialogView {
         categoriesList.add(0, null);
       }
       this.categoryComboBox = new JComboBox(categoriesList.toArray());
-      this.categoryComboBox.setEditable(true); 
+      this.categoryComboBox.setEditable(true);
       final ComboBoxEditor defaultEditor = this.categoryComboBox.getEditor();
       // Change editor to edit category name
       this.categoryComboBox.setEditor(new ComboBoxEditor() {
@@ -213,35 +213,35 @@ public class TexturesPanel extends JPanel implements DialogView {
               if (categoryIndex >= 0) {
                 return categories.get(categoryIndex);
               }
-              // If no existing category was found, return a new one          
+              // If no existing category was found, return a new one
               return category;
             }
           }
-        
+
           public void setItem(Object value) {
             if (value != null) {
               defaultEditor.setItem(((TexturesCategory)value).getName());
             }
           }
-  
+
           public void addActionListener(ActionListener l) {
             defaultEditor.addActionListener(l);
           }
-  
+
           public Component getEditorComponent() {
             return defaultEditor.getEditorComponent();
           }
-  
+
           public void removeActionListener(ActionListener l) {
             defaultEditor.removeActionListener(l);
           }
-  
+
           public void selectAll() {
             defaultEditor.selectAll();
           }
         });
       this.categoryComboBox.setRenderer(new DefaultListCellRenderer() {
-          public Component getListCellRendererComponent(JList list, Object value, int index, 
+          public Component getListCellRendererComponent(JList list, Object value, int index,
                                                         boolean isSelected, boolean cellHasFocus) {
             if (value == null) {
               value = " ";
@@ -271,14 +271,14 @@ public class TexturesPanel extends JPanel implements DialogView {
       }
       this.categoryComboBox.setMaximumRowCount(15);
     }
-    
+
     final float minimumLength = preferences.getLengthUnit().getMinimumLength();
     final float maximumLength = preferences.getLengthUnit().getMaximumLength();
     if (this.controller.isPropertyEditable(TexturesController.Property.WIDTH)) {
       // Create width label and its spinner bound to WIDTH controller property
-      this.widthLabel = new JLabel(SwingTools.getLocalizedLabelText(preferences, 
+      this.widthLabel = new JLabel(SwingTools.getLocalizedLabelText(preferences,
           TexturesPanel.class, "widthLabel.text", unitName));
-      final NullableSpinner.NullableSpinnerLengthModel widthSpinnerModel = 
+      final NullableSpinner.NullableSpinnerLengthModel widthSpinnerModel =
           new NullableSpinner.NullableSpinnerLengthModel(preferences, minimumLength, maximumLength);
       this.widthSpinner = new NullableSpinner(widthSpinnerModel);
       final PropertyChangeListener widthChangeListener = new PropertyChangeListener() {
@@ -301,12 +301,12 @@ public class TexturesPanel extends JPanel implements DialogView {
           }
         });
     }
-    
+
     if (this.controller.isPropertyEditable(TexturesController.Property.HEIGHT)) {
       // Create height label and its spinner bound to HEIGHT controller property
-      this.heightLabel = new JLabel(SwingTools.getLocalizedLabelText(preferences, 
+      this.heightLabel = new JLabel(SwingTools.getLocalizedLabelText(preferences,
           TexturesPanel.class, "heightLabel.text", unitName));
-      final NullableSpinner.NullableSpinnerLengthModel heightSpinnerModel = 
+      final NullableSpinner.NullableSpinnerLengthModel heightSpinnerModel =
           new NullableSpinner.NullableSpinnerLengthModel(preferences, minimumLength, maximumLength);
       this.heightSpinner = new NullableSpinner(heightSpinnerModel);
       final PropertyChangeListener heightChangeListener = new PropertyChangeListener() {
@@ -329,7 +329,7 @@ public class TexturesPanel extends JPanel implements DialogView {
           }
         });
     }
-    
+
     if (this.controller.isPropertyEditable(TexturesController.Property.CREATOR)) {
       // Create creator label and its text field bound to CREATOR controller property
       this.creatorLabel = new JLabel(SwingTools.getLocalizedLabelText(preferences, TexturesPanel.class, "creatorLabel.text"));
@@ -346,7 +346,7 @@ public class TexturesPanel extends JPanel implements DialogView {
       this.creatorTextField.getDocument().addDocumentListener(new DocumentListener() {
           public void changedUpdate(DocumentEvent ev) {
             controller.removePropertyChangeListener(TexturesController.Property.CREATOR, creatorChangeListener);
-            String creator = creatorTextField.getText(); 
+            String creator = creatorTextField.getText();
             if (creator == null || creator.trim().length() == 0) {
               controller.setCreator(null);
             } else {
@@ -354,17 +354,17 @@ public class TexturesPanel extends JPanel implements DialogView {
             }
             controller.addPropertyChangeListener(TexturesController.Property.CREATOR, creatorChangeListener);
           }
-    
+
           public void insertUpdate(DocumentEvent ev) {
             changedUpdate(ev);
           }
-    
+
           public void removeUpdate(DocumentEvent ev) {
             changedUpdate(ev);
           }
         });
     }
-  
+
     if (this.controller.isPropertyEditable(TexturesController.Property.IMAGE)) {
       this.imageComponent = new ScaledImageComponent();
       Insets insets = this.imageComponent.getInsets();
@@ -383,18 +383,18 @@ public class TexturesPanel extends JPanel implements DialogView {
   }
 
   /**
-   * Sets the image viewed by this texture.  
+   * Sets the image viewed by this texture.
    */
   public void setImage(Content image, final UserPreferences preferences) {
     if (image == null) {
-      this.imageComponent.setImage(null);            
+      this.imageComponent.setImage(null);
     } else {
       InputStream in = null;
       try {
         in = controller.getImage().openStream();
         this.imageComponent.setImage(ImageIO.read(in));
       } catch (IOException e) {
-        JOptionPane.showMessageDialog(SwingUtilities.getRootPane(TexturesPanel.this), 
+        JOptionPane.showMessageDialog(SwingUtilities.getRootPane(TexturesPanel.this),
             preferences.getLocalizedString(TexturesPanel.class, "textureError"),
             preferences.getLocalizedString(TexturesPanel.class, "errorTitle"),
             JOptionPane.ERROR_MESSAGE);
@@ -447,93 +447,94 @@ public class TexturesPanel extends JPanel implements DialogView {
       }
     }
   }
-  
+
   /**
-   * Layouts panel components in panel with their labels. 
+   * Layouts panel components in panel with their labels.
    */
   private void layoutComponents() {
-    int labelAlignment = OperatingSystem.isMacOSX() 
+    int labelAlignment = OperatingSystem.isMacOSX()
         ? GridBagConstraints.LINE_END
         : GridBagConstraints.LINE_START;
-    Insets labelInsets = new Insets(0, 0, 5, 5);
-    Insets componentInsets = new Insets(0, 0, 5, 0);
+    int gap = Math.round(5 * SwingTools.getResolutionScale());
+    Insets labelInsets = new Insets(0, 0, gap, gap);
+    Insets componentInsets = new Insets(0, 0, gap, 0);
     if (this.controller.isPropertyEditable(TexturesController.Property.IMAGE)) {
       JPanel iconPanel = new JPanel(new GridBagLayout());
-      // Add dummy labels with a vertical weight of 1 at top and bottom of iconPanel 
+      // Add dummy labels with a vertical weight of 1 at top and bottom of iconPanel
       // to keep imageComponent and rotationButtonsPanel in the middle
       // when grid bag fill constraint is BOTH for iconPanel.
       // If this constraint is set to HORIZONTAL only, iconPanel location may be lower
-      // and may not be the first panel treated by the focus traversal algorithm 
+      // and may not be the first panel treated by the focus traversal algorithm
       iconPanel.add(new JLabel(), new GridBagConstraints(
-          0, 0, 1, 1, 0, 1, GridBagConstraints.CENTER, 
+          0, 0, 1, 1, 0, 1, GridBagConstraints.CENTER,
           GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0));
       iconPanel.add(this.imageComponent, new GridBagConstraints(
-          0, 1, 1, 1, 0, 0, GridBagConstraints.CENTER, 
-          GridBagConstraints.NONE, new Insets(0, 0, 5, 0), 0, 0));
+          0, 1, 1, 1, 0, 0, GridBagConstraints.CENTER,
+          GridBagConstraints.NONE, new Insets(0, 0, gap, 0), 0, 0));
       iconPanel.add(new JLabel(), new GridBagConstraints(
-          0, 3, 1, 1, 0, 1, GridBagConstraints.CENTER, 
+          0, 3, 1, 1, 0, 1, GridBagConstraints.CENTER,
           GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0));
 
       add(iconPanel, new GridBagConstraints(
-          0, 0, 1, 15, 0, 0, GridBagConstraints.CENTER, 
-          GridBagConstraints.BOTH, new Insets(0, 0, 0, 15), 0, 0));
+          0, 0, 1, 15, 0, 0, GridBagConstraints.CENTER,
+          GridBagConstraints.BOTH, new Insets(0, 0, 0, 3 * gap), 0, 0));
     }
     if (this.controller.isPropertyEditable(TexturesController.Property.ID)) {
       add(this.idLabel, new GridBagConstraints(
-          1, 0, 1, 1, 0, 0, labelAlignment, 
+          1, 0, 1, 1, 0, 0, labelAlignment,
           GridBagConstraints.NONE, labelInsets, 0, 0));
       add(this.idTextField, new GridBagConstraints(
-          2, 0, 3, 1, 0, 0, GridBagConstraints.LINE_START, 
+          2, 0, 3, 1, 0, 0, GridBagConstraints.LINE_START,
           GridBagConstraints.HORIZONTAL, componentInsets, 0, 0));
     }
     if (this.controller.isPropertyEditable(TexturesController.Property.NAME)) {
       add(this.nameLabel, new GridBagConstraints(
-          1, 1, 1, 1, 0, 0, labelAlignment, 
+          1, 1, 1, 1, 0, 0, labelAlignment,
           GridBagConstraints.NONE, labelInsets, 0, 0));
       add(this.nameTextField, new GridBagConstraints(
-          2, 1, 3, 1, 0, 0, GridBagConstraints.LINE_START, 
+          2, 1, 3, 1, 0, 0, GridBagConstraints.LINE_START,
           GridBagConstraints.HORIZONTAL, componentInsets, 0, 0));
     }
     if (this.controller.isPropertyEditable(TexturesController.Property.CREATOR)) {
       add(this.creatorLabel, new GridBagConstraints(
-          1, 3, 1, 1, 0, 0, labelAlignment, 
+          1, 3, 1, 1, 0, 0, labelAlignment,
           GridBagConstraints.NONE, labelInsets, 0, 0));
       add(this.creatorTextField, new GridBagConstraints(
-          2, 3, 1, 1, 0, 0, GridBagConstraints.LINE_START, 
-          GridBagConstraints.HORIZONTAL, new Insets(0, 0, 5, 10), 0, 0));
+          2, 3, 1, 1, 0, 0, GridBagConstraints.LINE_START,
+          GridBagConstraints.HORIZONTAL, new Insets(0, 0, gap, 10), 0, 0));
     }
     if (this.controller.isPropertyEditable(TexturesController.Property.CATEGORY)) {
       add(this.categoryLabel, new GridBagConstraints(
-          3, 3, 1, 1, 0, 0, labelAlignment, 
+          3, 3, 1, 1, 0, 0, labelAlignment,
           GridBagConstraints.NONE, labelInsets, 0, 0));
       add(this.categoryComboBox, new GridBagConstraints(
-          4, 3, 1, 1, 0, 0, GridBagConstraints.LINE_START, 
+          4, 3, 1, 1, 0, 0, GridBagConstraints.LINE_START,
           GridBagConstraints.HORIZONTAL, componentInsets, 0, 0));
     }
     if (this.controller.isPropertyEditable(TexturesController.Property.WIDTH)) {
       add(this.widthLabel, new GridBagConstraints(
-          1, 5, 1, 1, 0, 0, labelAlignment, 
+          1, 5, 1, 1, 0, 0, labelAlignment,
           GridBagConstraints.NONE, labelInsets, 0, 0));
       add(this.widthSpinner, new GridBagConstraints(
-          2, 5, 1, 1, 0, 0, GridBagConstraints.LINE_START, 
-          GridBagConstraints.HORIZONTAL, new Insets(0, 0, 5, 10), -10, 0));
+          2, 5, 1, 1, 0, 0, GridBagConstraints.LINE_START,
+          GridBagConstraints.HORIZONTAL, new Insets(0, 0, gap, 2 * gap), -10, 0));
     }
     if (this.controller.isPropertyEditable(TexturesController.Property.HEIGHT)) {
       add(this.heightLabel, new GridBagConstraints(
-          3, 5, 1, 1, 0, 0, labelAlignment, 
+          3, 5, 1, 1, 0, 0, labelAlignment,
           GridBagConstraints.NONE, labelInsets, 0, 0));
       add(this.heightSpinner, new GridBagConstraints(
-          4, 5, 1, 1, 0, 0, GridBagConstraints.LINE_START, 
-          GridBagConstraints.HORIZONTAL, new Insets(0, 0, 5, 10), -10, 0));
+          4, 5, 1, 1, 0, 0, GridBagConstraints.LINE_START,
+          GridBagConstraints.HORIZONTAL, new Insets(0, 0, gap, 2 * gap), -10, 0));
     }
   }
 
   /**
-   * Displays this panel in a modal dialog box. 
+   * Displays this panel in a modal dialog box.
    */
   public void displayView(View parentView) {
     final Component focusOwner = KeyboardFocusManager.getCurrentKeyboardFocusManager().getFocusOwner();
-    if (SwingTools.showConfirmDialog((JComponent)parentView, 
+    if (SwingTools.showConfirmDialog((JComponent)parentView,
             this, this.dialogTitle, this.nameTextField) == JOptionPane.OK_OPTION) {
       this.controller.modifyTextures();
     }


=====================================
src/com/eteks/textureslibraryeditor/swing/package.properties
=====================================
@@ -118,10 +118,10 @@ EditorPane.about.message=<html><font face="sanssherif"><center><font size="+2"><
     <br><font size="-1">Java version %2$s</font>\
     <p>Please, visit http://www.sweethome3d.com/\
     <br>for software updates and bug report.\
-    </p><p><font size="-2">\u00a9 Copyrights 2012-2015 eTeks  info at eteks.com\
+    </p><p><font size="-2">\u00a9 Copyrights 2012-2019 eTeks  info at eteks.com\
     <br>Distributed under GNU General Public License</font>
 # Note to translators: dot not copy the 2 following keys in localized file
-EditorPane.about.version=1.5
+EditorPane.about.version=1.6
 EditorPane.about.icon=/com/eteks/textureslibraryeditor/swing/resources/aboutIcon.png
 
 


=====================================
src/com/eteks/textureslibraryeditor/swing/package_fr.properties
=====================================
@@ -78,7 +78,7 @@ EditorPane.about.message=<html><font face="sanssherif"><center><font size="+2"><
     <br><font size="-1">Java version %2$s</font>\
     <p>Rendez-vous sur http://www.sweethome3d.com/fr/\
     <br>pour mettre  jour ce logiciel ou faire des suggestions.\
-    </p><p><font size="-2">\u00a9 Copyrights 2012-2015 eTeks  info at eteks.com\
+    </p><p><font size="-2">\u00a9 Copyrights 2012-2019 eTeks  info at eteks.com\
     <br>Distribu sous licence GNU General Public License</font>
 
 TexturesLanguageComboBox.defaultLanguage=Langue par dfaut


=====================================
src/com/eteks/textureslibraryeditor/viewcontroller/DefaultCategories.properties
=====================================
@@ -23,3 +23,5 @@ defaultTexturesCategory#4=Miscellaneous
 defaultTexturesCategory#5=Fabric
 defaultTexturesCategory#6=Roof
 defaultTexturesCategory#7=Wood
+defaultTexturesCategory#8=Wallpaper
+defaultTexturesCategory#9=Rug


=====================================
src/com/eteks/textureslibraryeditor/viewcontroller/DefaultCategories_bg.properties
=====================================
@@ -23,3 +23,5 @@ defaultTexturesCategory#4=\u0420\u0430\u0437\u043d\u0438
 defaultTexturesCategory#5=\u041f\u043b\u0430\u0442
 defaultTexturesCategory#6=\u0422\u0430\u0432\u0430\u043d
 defaultTexturesCategory#7=\u0414\u044a\u0440\u0432\u043e
+defaultTexturesCategory#8=\u0421\u0442\u0435\u043d\u0430
+defaultTexturesCategory#9=\u0420\u0430\u0437\u043d\u0438


=====================================
src/com/eteks/textureslibraryeditor/viewcontroller/DefaultCategories_cs.properties
=====================================
@@ -23,3 +23,5 @@ defaultTexturesCategory#4=R\u016Fzn\u00E9
 defaultTexturesCategory#5=Tkanina
 defaultTexturesCategory#6=St\u0159echa
 defaultTexturesCategory#7=D\u0159evo
+defaultTexturesCategory#8=Tapeta
+defaultTexturesCategory#9=Koberec


=====================================
src/com/eteks/textureslibraryeditor/viewcontroller/DefaultCategories_de.properties
=====================================
@@ -23,3 +23,5 @@ defaultTexturesCategory#4=Verschiedenes
 defaultTexturesCategory#5=Stoff
 defaultTexturesCategory#6=Dach
 defaultTexturesCategory#7=Holz
+defaultTexturesCategory#8=Mauer
+defaultTexturesCategory#9=Verschiedenes


=====================================
src/com/eteks/textureslibraryeditor/viewcontroller/DefaultCategories_el.properties
=====================================
@@ -23,3 +23,5 @@ defaultTexturesCategory#4=\u0394\u03b9\u03ac\u03c6\u03bf\u03c1\u03b1
 defaultTexturesCategory#5=\u038e\u03c6\u03b1\u03c3\u03bc\u03b1
 defaultTexturesCategory#6=\u039f\u03c1\u03bf\u03c6\u03ae
 defaultTexturesCategory#7=\u039e\u03cd\u03bb\u03bf
+defaultTexturesCategory#8=\u03a4\u03bf\u03af\u03c7\u03bf\u03c2
+defaultTexturesCategory#9=\u0394\u03b9\u03ac\u03c6\u03bf\u03c1\u03b1


=====================================
src/com/eteks/textureslibraryeditor/viewcontroller/DefaultCategories_es.properties
=====================================
@@ -23,3 +23,5 @@ defaultTexturesCategory#4=Varios
 defaultTexturesCategory#5=Telas
 defaultTexturesCategory#6=Tejado
 defaultTexturesCategory#7=Madera
+defaultTexturesCategory#8=Papel pintado
+defaultTexturesCategory#9=Alfombra


=====================================
src/com/eteks/textureslibraryeditor/viewcontroller/DefaultCategories_fi.properties
=====================================
@@ -23,3 +23,5 @@ defaultTexturesCategory#4=Sekalaiset
 defaultTexturesCategory#5=Kangas
 defaultTexturesCategory#6=Katto
 defaultTexturesCategory#7=Puu
+defaultTexturesCategory#8=Sein
+defaultTexturesCategory#9=Sekalaiset


=====================================
src/com/eteks/textureslibraryeditor/viewcontroller/DefaultCategories_fr.properties
=====================================
@@ -23,3 +23,5 @@ defaultTexturesCategory#4=Divers
 defaultTexturesCategory#5=Tissu
 defaultTexturesCategory#6=Toit
 defaultTexturesCategory#7=Bois
+defaultTexturesCategory#8=Papier peint
+defaultTexturesCategory#9=Tapis


=====================================
src/com/eteks/textureslibraryeditor/viewcontroller/DefaultCategories_hu.properties
=====================================
@@ -23,4 +23,5 @@ defaultTexturesCategory#4=Vegyes
 defaultTexturesCategory#5=Szvet
 defaultTexturesCategory#6=Tet\u0151
 defaultTexturesCategory#7=Fa
-
+defaultTexturesCategory#8=Tapta
+defaultTexturesCategory#9=Sz\u0151nyeg


=====================================
src/com/eteks/textureslibraryeditor/viewcontroller/DefaultCategories_it.properties
=====================================
@@ -23,3 +23,5 @@ defaultTexturesCategory#4=Miscellanea
 defaultTexturesCategory#5=Tessuto
 defaultTexturesCategory#6=Tetto
 defaultTexturesCategory#7=Legno
+defaultTexturesCategory#8=Carta parati
+defaultTexturesCategory#9=Tappeto


=====================================
src/com/eteks/textureslibraryeditor/viewcontroller/DefaultCategories_ja.properties
=====================================
@@ -23,3 +23,5 @@ defaultTexturesCategory#4=\u7a2e\u3005\u96d1\u591a
 defaultTexturesCategory#5=\u751f\u5730\u7d20\u6750
 defaultTexturesCategory#6=\u5c4b\u6839
 defaultTexturesCategory#7=\u6728\u6750
+defaultTexturesCategory#8=\u58c1
+defaultTexturesCategory#9=\u7a2e\u3005\u96d1\u591a


=====================================
src/com/eteks/textureslibraryeditor/viewcontroller/DefaultCategories_nl.properties
=====================================
@@ -22,4 +22,6 @@ defaultTexturesCategory#3=Lucht
 defaultTexturesCategory#4=Overig
 defaultTexturesCategory#5=Textiel
 defaultTexturesCategory#6=Dak
-defaultTexturesCategory#7=Hout
\ No newline at end of file
+defaultTexturesCategory#7=Hout
+defaultTexturesCategory#8=Muur
+defaultTexturesCategory#9=Overig


=====================================
src/com/eteks/textureslibraryeditor/viewcontroller/DefaultCategories_pl.properties
=====================================
@@ -23,3 +23,5 @@ defaultTexturesCategory#4=R\u00f3\u017cne
 defaultTexturesCategory#5=Tkanina
 defaultTexturesCategory#6=Dach
 defaultTexturesCategory#7=Drewno
+defaultTexturesCategory#8=\u015aciana
+defaultTexturesCategory#9=R\u00f3\u017cne


=====================================
src/com/eteks/textureslibraryeditor/viewcontroller/DefaultCategories_pt.properties
=====================================
@@ -20,3 +20,8 @@ defaultTexturesCategory#1=Piso
 defaultTexturesCategory#2=Parede
 defaultTexturesCategory#3=Cu
 defaultTexturesCategory#4=Variados
+defaultTexturesCategory#5=Tecido
+defaultTexturesCategory#6=Telhado
+defaultTexturesCategory#7=Madeira
+defaultTexturesCategory#8=Parede
+defaultTexturesCategory#9=Variados


=====================================
src/com/eteks/textureslibraryeditor/viewcontroller/DefaultCategories_pt_PT.properties
=====================================
@@ -23,3 +23,5 @@ defaultTexturesCategory#4=V
 defaultTexturesCategory#5=Tecido
 defaultTexturesCategory#6=Telhado
 defaultTexturesCategory#7=Madeira
+defaultTexturesCategory#8=Parede
+defaultTexturesCategory#9=Vrios


=====================================
src/com/eteks/textureslibraryeditor/viewcontroller/DefaultCategories_ru.properties
=====================================
@@ -23,3 +23,5 @@ defaultTexturesCategory#4=\u0420\u0430\u0437\u043d\u043e\u0435
 defaultTexturesCategory#5=\u0422\u043a\u0430\u043d\u044c
 defaultTexturesCategory#6=\u041a\u0440\u044b\u0448\u0430
 defaultTexturesCategory#7=\u0414\u0435\u0440\u0435\u0432\u043e
+defaultTexturesCategory#8=\u041e\u0431\u043e\u0438
+defaultTexturesCategory#9=\u0420\u0430\u0437\u043d\u043e\u0435


=====================================
src/com/eteks/textureslibraryeditor/viewcontroller/DefaultCategories_sv.properties
=====================================
@@ -22,4 +22,6 @@ defaultTexturesCategory#3=Himmel
 defaultTexturesCategory#4=vrigt
 defaultTexturesCategory#5=Textil
 defaultTexturesCategory#6=Tak
-defaultTexturesCategory#7=Tr
\ No newline at end of file
+defaultTexturesCategory#7=Tr
+defaultTexturesCategory#8=Vggar
+defaultTexturesCategory#9=vrigt


=====================================
src/com/eteks/textureslibraryeditor/viewcontroller/DefaultCategories_tr.properties
=====================================
@@ -23,3 +23,5 @@ defaultTexturesCategory#4=Muhtelif
 defaultTexturesCategory#5=Kuma\u015f
 defaultTexturesCategory#6=at\u0131
 defaultTexturesCategory#7=Tahta
+defaultTexturesCategory#8=Duvar
+defaultTexturesCategory#9=Muhtelif


=====================================
src/com/eteks/textureslibraryeditor/viewcontroller/DefaultCategories_vi.properties
=====================================
@@ -23,3 +23,5 @@ defaultTexturesCategory#4=C
 defaultTexturesCategory#5=Va\u0309i
 defaultTexturesCategory#6=Mi nh
 defaultTexturesCategory#7=G\u1ed7
+defaultTexturesCategory#8=T\u01b0\u1eddng
+defaultTexturesCategory#9=Cc n\u1ec1n khc


=====================================
src/com/eteks/textureslibraryeditor/viewcontroller/DefaultCategories_zh_CN.properties
=====================================
@@ -23,4 +23,5 @@ defaultTexturesCategory#4=\u6742\u9879
 defaultTexturesCategory#5=\u9488\u7ec7
 defaultTexturesCategory#6=\u5c4b\u74e6
 defaultTexturesCategory#7=\u5b9e\u6728\u76ae
-
+defaultTexturesCategory#8=\u5899\u9762
+defaultTexturesCategory#9=\u6742\u9879


=====================================
src/com/eteks/textureslibraryeditor/viewcontroller/DefaultCategories_zh_TW.properties
=====================================
@@ -22,4 +22,6 @@ defaultTexturesCategory#3=\u5929\u7a7a
 defaultTexturesCategory#4=\u96dc\u9805
 defaultTexturesCategory#5=\u91dd\u7e54
 defaultTexturesCategory#6=\u5c4b\u74e6
-defaultTexturesCategory#7=\u5be6\u6728\u76ae
\ No newline at end of file
+defaultTexturesCategory#7=\u5be6\u6728\u76ae
+defaultTexturesCategory#8=\u7246
+defaultTexturesCategory#9=\u96dc\u9805



View it on GitLab: https://salsa.debian.org/java-team/sweethome3d-textures-editor/commit/61461be9cb18f3bc210136585e9f89a3039d1339

-- 
View it on GitLab: https://salsa.debian.org/java-team/sweethome3d-textures-editor/commit/61461be9cb18f3bc210136585e9f89a3039d1339
You're receiving this email because of your account on salsa.debian.org.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/pkg-java-commits/attachments/20190128/15b0c9ed/attachment.html>


More information about the pkg-java-commits mailing list