Improve performance of "Image" component and greatly reduce file size

when images are present
This commit is contained in:
Branislav Stojkovic
2019-02-24 14:32:30 +01:00
parent 0d007e5737
commit ce43a5d2e6
9 changed files with 227 additions and 172 deletions
Binary file not shown.
Binary file not shown.
@@ -21,18 +21,17 @@
*/
package org.diylc.swing.gui.editor;
import java.awt.Color;
import java.awt.Component;
import java.awt.Font;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import org.apache.log4j.Logger;
import org.diylc.common.PropertyWrapper;
import org.diylc.core.annotations.DynamicList;
import org.diylc.core.annotations.MultiLineText;
import org.diylc.core.measures.AbstractMeasure;
import java.awt.Color;
import java.awt.Component;
import java.awt.Font;
import javax.swing.JLabel;
import org.apache.log4j.Logger;
import org.diylc.common.PropertyWrapper;
import org.diylc.core.annotations.DynamicList;
import org.diylc.core.annotations.MultiLineText;
import org.diylc.core.measures.AbstractMeasure;
/**
* Based on {@link PropertyWrapper#getType()}, creates an appropriate {@link Component} that can
@@ -77,7 +76,7 @@ public class FieldEditorFactory {
MeasureArrayEditor editor = new MeasureArrayEditor(property);
return editor;
}
if (ImageIcon.class.isAssignableFrom(property.getType())) {
if (byte[].class.isAssignableFrom(property.getType())) {
ImageEditor editor = new ImageEditor(property);
return editor;
}
@@ -21,15 +21,18 @@
*/
package org.diylc.swing.gui.editor;
import java.awt.event.ActionListener;
import java.io.File;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import org.diylc.common.PropertyWrapper;
import org.diylc.swing.gui.DialogFactory;
import org.diylc.swing.plugins.file.FileFilterEnum;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import javax.swing.JButton;
import org.apache.poi.util.IOUtils;
import org.diylc.common.PropertyWrapper;
import org.diylc.swing.gui.DialogFactory;
import org.diylc.swing.plugins.file.FileFilterEnum;
public class ImageEditor extends JButton {
@@ -47,9 +50,22 @@ public class ImageEditor extends JButton {
DialogFactory.getInstance().showOpenDialog(FileFilterEnum.IMAGES.getFilter(), null,
FileFilterEnum.IMAGES.getExtensions()[0], null);
if (file != null) {
property.setChanged(true);
ImageIcon image = new ImageIcon(file.getAbsolutePath());
property.setValue(image);
property.setChanged(true);
FileInputStream fis;
try {
fis = new FileInputStream(file);
byte[] byteArray = IOUtils.toByteArray(fis);
// ImageIcon image = new ImageIcon(file.getAbsolutePath());
property.setValue(byteArray);
fis.close();
} catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
});
+5 -1
View File
@@ -2477,7 +2477,11 @@
<org.diylc.appframework.update.Change>
<changeType>NEW_FEATURE</changeType>
<description>Added ability to mark common lugs on all "Lever Switch" types with a different color</description>
</org.diylc.appframework.update.Change>
</org.diylc.appframework.update.Change>
<org.diylc.appframework.update.Change>
<changeType>IMPROVEMENT</changeType>
<description>Improve performance of "Image" component and greatly reduce file size when images are present</description>
</org.diylc.appframework.update.Change>
<org.diylc.appframework.update.Change>
<changeType>IMPROVEMENT</changeType>
<description>Allow a file to be loaded if it references a missing component property, but show a warning.</description>