Skip to content

Commit

Permalink
Merge pull request #501 from neph1/fix_material_name_parsing
Browse files Browse the repository at this point in the history
fixes texture name parsing issue in texturepanel
  • Loading branch information
neph1 authored Apr 27, 2023
2 parents 6a734ca + 7053b6d commit 88ef54e
Show file tree
Hide file tree
Showing 2 changed files with 104 additions and 17 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
* and open the template in the editor.
*/

/*
/*
* SelectionPanel.java
*
* Created on 14.06.2010, 16:52:22
Expand All @@ -25,20 +25,31 @@
import java.util.logging.Logger;

/**
* The TexturePanel is a row in the material editor representing a special texture
* The TexturePanel is a row in the material editor representing a special
* texture
*
* @author normenhansen
*/
public class TexturePanel extends MaterialPropertyWidget {

private final TexturePropertyEditor editor;
private final ProjectAssetManager manager;
private TexturePropertyEditor editor;
private ProjectAssetManager manager;
private boolean flip = false;
private boolean repeat = false;
protected String textureName = null; // always enclosed with ""
private TexturePreview texPreview;
private final ScheduledThreadPoolExecutor exec = new ScheduledThreadPoolExecutor(1);

/** Creates new form SelectionPanel */
/**
* Used by tests
*/
protected TexturePanel() {

}

/**
* Creates new form SelectionPanel
*/
public TexturePanel(ProjectAssetManager manager) {
this.manager = manager;
editor = new TexturePropertyEditor(manager);
Expand All @@ -50,25 +61,27 @@ private void displayPreview() {
exec.execute(new Runnable() {
@Override
public void run() {
try{
try {
if (texPreview == null) {
texPreview = new TexturePreview(manager);
}
final String[] textureNameComponents = textureName.split(" ");
texPreview.requestPreview(stripQuotes(textureNameComponents[textureNameComponents.length - 1]), "", 80, 25, texturePreview, null);
texPreview.requestPreview(extractTextureName(textureName), "", 80, 25, texturePreview, null);
} catch (AssetNotFoundException a) {
Logger.getLogger(MaterialEditorTopComponent.class.getName()).log(Level.WARNING, "Could not load texture {0}", textureName);
}
}
});
}
}

private String stripQuotes(String s) {
return s.substring(1, s.length() - 1);

// visible for tests
protected String extractTextureName(String textureName) {
final String[] textureNameComponents = textureName.split("\"");
return textureNameComponents[textureNameComponents.length - 1];
}

private void updateFlipRepeat() {
// visible for tests
protected void updateFlipRepeat() {
String propertyValue = property.getValue();
propertyValue = propertyValue.replaceFirst(textureName, "");
if (flip && !propertyValue.contains("Flip ")) {
Expand Down Expand Up @@ -104,10 +117,10 @@ private static BufferedImage resizeImage(BufferedImage originalImage) {
return resizedImage;
}

/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
Expand Down Expand Up @@ -263,6 +276,7 @@ private void jCheckBox2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FI

private void texturePreviewMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_texturePreviewMouseClicked
Component view = editor.getCustomEditor();
property.setValue("");
view.setVisible(true);
if (editor.getValue() != null) {
textureName = "\"" + editor.getAsText() + "\"";
Expand All @@ -273,7 +287,6 @@ private void texturePreviewMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FI
textureName = "\"\"";
texturePreview.setIcon(null);
texturePreview.setToolTipText("");
property.setValue("");
fireChanged();
}
}//GEN-LAST:event_texturePreviewMouseClicked
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
/*
* Copyright (c) 2009-2023 jMonkeyEngine
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* * Neither the name of 'jMonkeyEngine' nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package com.jme3.gde.materials.multiview.widgets;

import static org.junit.jupiter.api.Assertions.assertEquals;
import org.junit.jupiter.api.Test;


/**
*
* @author rickard
*/
public class TexturePanelTest {

public TexturePanelTest() {
}

@Test
public void testExtractTextureName() {
TexturePanel texturePanel = new TexturePanel();
String textureName = "\"simple_name.jpg\"";
String extractedName = texturePanel.extractTextureName(textureName);
assertEquals("simple_name.jpg", extractedName);

String textureNameWithModifier = "Flip Repeat \"simple_name.jpg\"";
extractedName = texturePanel.extractTextureName(textureNameWithModifier);
assertEquals("simple_name.jpg", extractedName);

String textureNameWithSpaces = "\"texture name with spaces.jpg\"";
extractedName = texturePanel.extractTextureName(textureNameWithSpaces);
assertEquals("texture name with spaces.jpg", extractedName);

String textureNameWithSpaceAndModifier = "Flip Repeat \"texture name with spaces.jpg\"";
extractedName = texturePanel.extractTextureName(textureNameWithSpaceAndModifier);
assertEquals("texture name with spaces.jpg", extractedName);
}

/**
* Test of updateFlipRepeat method, of class TexturePanel.
*/
@org.junit.Test
public void testUpdateFlipRepeat() {
}

}

0 comments on commit 88ef54e

Please sign in to comment.