com.codename1.designer.FindMultiImages Maven / Gradle / Ivy
/*
* Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores
* CA 94065 USA or visit www.oracle.com if you need additional information or
* have any questions.
*/
package com.codename1.designer;
import com.codename1.ui.util.EditableResources;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JLabel;
import javax.swing.SwingUtilities;
/**
* Allows seeking for multi-images in a directory hierarchy seamlessly
*
* @author Shai Almog
*/
public class FindMultiImages extends javax.swing.JDialog {
private EditableResources res;
public FindMultiImages(java.awt.Component c, EditableResources res) {
this((java.awt.Frame)SwingUtilities.windowForComponent(c), true, res);
}
/** Creates new form FindMultiImages */
public FindMultiImages(java.awt.Frame parent, boolean modal, EditableResources res) {
super(parent, modal);
this.res = res;
initComponents();
ModifiableJOptionPane.reverseOKCancel(ok, cancel);
pack();
setLocationByPlatform(true);
setVisible(true);
}
/** 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")
// //GEN-BEGIN:initComponents
private void initComponents() {
jLabel1 = new javax.swing.JLabel();
veryLow = new javax.swing.JLabel();
selectVeryLowDensity = new javax.swing.JButton();
jLabel3 = new javax.swing.JLabel();
low = new javax.swing.JLabel();
selectLowDensity = new javax.swing.JButton();
jLabel5 = new javax.swing.JLabel();
medium = new javax.swing.JLabel();
selectMediumDensity = new javax.swing.JButton();
jLabel7 = new javax.swing.JLabel();
high = new javax.swing.JLabel();
selectHighDensity = new javax.swing.JButton();
jLabel9 = new javax.swing.JLabel();
veryHigh = new javax.swing.JLabel();
selectVeyHighDensity = new javax.swing.JButton();
jLabel11 = new javax.swing.JLabel();
hd = new javax.swing.JLabel();
selectHDDensity = new javax.swing.JButton();
jPanel1 = new javax.swing.JPanel();
jPanel2 = new javax.swing.JPanel();
ok = new javax.swing.JButton();
cancel = new javax.swing.JButton();
jLabel12 = new javax.swing.JLabel();
hd560 = new javax.swing.JLabel();
select560Density = new javax.swing.JButton();
jLabel13 = new javax.swing.JLabel();
hd2 = new javax.swing.JLabel();
select2HDDensity = new javax.swing.JButton();
jLabel14 = new javax.swing.JLabel();
hd4k = new javax.swing.JLabel();
select4kDensity = new javax.swing.JButton();
FormListener formListener = new FormListener();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
setTitle("Find Multi-Images");
jLabel1.setText("Very Low Density Dir");
jLabel1.setName("jLabel1"); // NOI18N
veryLow.setText("[Undefined]");
veryLow.setName("veryLow"); // NOI18N
selectVeryLowDensity.setText("...");
selectVeryLowDensity.setName("selectVeryLowDensity"); // NOI18N
selectVeryLowDensity.addActionListener(formListener);
jLabel3.setText("Low Density Dir");
jLabel3.setName("jLabel3"); // NOI18N
low.setText("[Undefined]");
low.setName("low"); // NOI18N
selectLowDensity.setText("...");
selectLowDensity.setName("selectLowDensity"); // NOI18N
selectLowDensity.addActionListener(formListener);
jLabel5.setText("Medium Density Dir");
jLabel5.setName("jLabel5"); // NOI18N
medium.setText("[Undefined]");
medium.setName("medium"); // NOI18N
selectMediumDensity.setText("...");
selectMediumDensity.setName("selectMediumDensity"); // NOI18N
selectMediumDensity.addActionListener(formListener);
jLabel7.setText("High Density Dir");
jLabel7.setName("jLabel7"); // NOI18N
high.setText("[Undefined]");
high.setName("high"); // NOI18N
selectHighDensity.setText("...");
selectHighDensity.setName("selectHighDensity"); // NOI18N
selectHighDensity.addActionListener(formListener);
jLabel9.setText("Very High Density Dir");
jLabel9.setName("jLabel9"); // NOI18N
veryHigh.setText("[Undefined]");
veryHigh.setName("veryHigh"); // NOI18N
selectVeyHighDensity.setText("...");
selectVeyHighDensity.setName("selectVeyHighDensity"); // NOI18N
selectVeyHighDensity.addActionListener(formListener);
jLabel11.setText("HD Density Dir");
jLabel11.setName("jLabel11"); // NOI18N
hd.setText("[Undefined]");
hd.setName("hd"); // NOI18N
selectHDDensity.setText("...");
selectHDDensity.setName("selectHDDensity"); // NOI18N
selectHDDensity.addActionListener(formListener);
jPanel1.setName("jPanel1"); // NOI18N
jPanel2.setName("jPanel2"); // NOI18N
jPanel2.setLayout(new java.awt.GridLayout(1, 2, 5, 0));
ok.setText("OK");
ok.setName("ok"); // NOI18N
ok.addActionListener(formListener);
jPanel2.add(ok);
cancel.setText("Cancel");
cancel.setName("cancel"); // NOI18N
cancel.addActionListener(formListener);
jPanel2.add(cancel);
jPanel1.add(jPanel2);
jLabel12.setText("560 Density Dir");
jLabel12.setName("jLabel12"); // NOI18N
hd560.setText("[Undefined]");
hd560.setName("hd560"); // NOI18N
select560Density.setText("...");
select560Density.setName("select560Density"); // NOI18N
select560Density.addActionListener(formListener);
jLabel13.setText("2HD Density Dir");
jLabel13.setName("jLabel13"); // NOI18N
hd2.setText("[Undefined]");
hd2.setName("hd2"); // NOI18N
select2HDDensity.setText("...");
select2HDDensity.setName("select2HDDensity"); // NOI18N
select2HDDensity.addActionListener(formListener);
jLabel14.setText("4K Density Dir");
jLabel14.setName("jLabel14"); // NOI18N
hd4k.setText("[Undefined]");
hd4k.setName("hd4k"); // NOI18N
select4kDensity.setText("...");
select4kDensity.setName("select4kDensity"); // NOI18N
select4kDensity.addActionListener(formListener);
org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(layout.createSequentialGroup()
.addContainerGap()
.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(org.jdesktop.layout.GroupLayout.TRAILING, jPanel1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 712, Short.MAX_VALUE)
.add(layout.createSequentialGroup()
.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(jLabel1)
.add(jLabel3)
.add(jLabel5)
.add(jLabel7)
.add(jLabel9)
.add(jLabel11)
.add(jLabel12)
.add(jLabel13)
.add(jLabel14))
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(layout.createSequentialGroup()
.add(hd4k, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 489, Short.MAX_VALUE)
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(select4kDensity))
.add(layout.createSequentialGroup()
.add(hd2, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 489, Short.MAX_VALUE)
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(select2HDDensity))
.add(layout.createSequentialGroup()
.add(hd560, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 489, Short.MAX_VALUE)
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(select560Density))
.add(layout.createSequentialGroup()
.add(veryLow, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 489, Short.MAX_VALUE)
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(selectVeryLowDensity))
.add(layout.createSequentialGroup()
.add(low, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 484, Short.MAX_VALUE)
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(selectLowDensity))
.add(layout.createSequentialGroup()
.add(medium, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 484, Short.MAX_VALUE)
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(selectMediumDensity))
.add(layout.createSequentialGroup()
.add(high, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 484, Short.MAX_VALUE)
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(selectHighDensity))
.add(layout.createSequentialGroup()
.add(veryHigh, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 484, Short.MAX_VALUE)
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(selectVeyHighDensity))
.add(layout.createSequentialGroup()
.add(hd, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 484, Short.MAX_VALUE)
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(selectHDDensity)))))
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(layout.createSequentialGroup()
.addContainerGap()
.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
.add(jLabel1)
.add(veryLow)
.add(selectVeryLowDensity))
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
.add(jLabel3)
.add(low)
.add(selectLowDensity))
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
.add(jLabel5)
.add(medium)
.add(selectMediumDensity))
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
.add(jLabel7)
.add(high)
.add(selectHighDensity))
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
.add(jLabel9)
.add(veryHigh)
.add(selectVeyHighDensity))
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
.add(jLabel11)
.add(hd)
.add(selectHDDensity))
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
.add(jLabel12)
.add(hd560)
.add(select560Density))
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
.add(jLabel13)
.add(hd2)
.add(select2HDDensity))
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
.add(jLabel14)
.add(hd4k)
.add(select4kDensity))
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.add(jPanel1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
.addContainerGap())
);
pack();
}
// Code for dispatching events from components to event handlers.
private class FormListener implements java.awt.event.ActionListener {
FormListener() {}
public void actionPerformed(java.awt.event.ActionEvent evt) {
if (evt.getSource() == selectVeryLowDensity) {
FindMultiImages.this.selectVeryLowDensityActionPerformed(evt);
}
else if (evt.getSource() == selectLowDensity) {
FindMultiImages.this.selectLowDensityActionPerformed(evt);
}
else if (evt.getSource() == selectMediumDensity) {
FindMultiImages.this.selectMediumDensityActionPerformed(evt);
}
else if (evt.getSource() == selectHighDensity) {
FindMultiImages.this.selectHighDensityActionPerformed(evt);
}
else if (evt.getSource() == selectVeyHighDensity) {
FindMultiImages.this.selectVeyHighDensityActionPerformed(evt);
}
else if (evt.getSource() == selectHDDensity) {
FindMultiImages.this.selectHDDensityActionPerformed(evt);
}
else if (evt.getSource() == ok) {
FindMultiImages.this.okActionPerformed(evt);
}
else if (evt.getSource() == cancel) {
FindMultiImages.this.cancelActionPerformed(evt);
}
else if (evt.getSource() == select560Density) {
FindMultiImages.this.select560DensityActionPerformed(evt);
}
else if (evt.getSource() == select2HDDensity) {
FindMultiImages.this.select2HDDensityActionPerformed(evt);
}
else if (evt.getSource() == select4kDensity) {
FindMultiImages.this.select4kDensityActionPerformed(evt);
}
}
}// //GEN-END:initComponents
private void selectVeryLowDensityActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_selectVeryLowDensityActionPerformed
updateDir(veryLow);
}//GEN-LAST:event_selectVeryLowDensityActionPerformed
private void selectLowDensityActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_selectLowDensityActionPerformed
updateDir(low);
}//GEN-LAST:event_selectLowDensityActionPerformed
private void selectMediumDensityActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_selectMediumDensityActionPerformed
updateDir(medium);
}//GEN-LAST:event_selectMediumDensityActionPerformed
private void selectHighDensityActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_selectHighDensityActionPerformed
updateDir(high);
}//GEN-LAST:event_selectHighDensityActionPerformed
private void selectVeyHighDensityActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_selectVeyHighDensityActionPerformed
updateDir(veryHigh);
}//GEN-LAST:event_selectVeyHighDensityActionPerformed
private void selectHDDensityActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_selectHDDensityActionPerformed
updateDir(hd);
}//GEN-LAST:event_selectHDDensityActionPerformed
private void cancelActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cancelActionPerformed
dispose();
}//GEN-LAST:event_cancelActionPerformed
private void okActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_okActionPerformed
updateLabelImages(veryLow, com.codename1.ui.Display.DENSITY_VERY_LOW);
updateLabelImages(low, com.codename1.ui.Display.DENSITY_LOW);
updateLabelImages(medium, com.codename1.ui.Display.DENSITY_MEDIUM);
updateLabelImages(high, com.codename1.ui.Display.DENSITY_HIGH);
updateLabelImages(veryHigh, com.codename1.ui.Display.DENSITY_VERY_HIGH);
updateLabelImages(hd, com.codename1.ui.Display.DENSITY_HD);
updateLabelImages(hd560, com.codename1.ui.Display.DENSITY_560);
updateLabelImages(hd2, com.codename1.ui.Display.DENSITY_2HD);
updateLabelImages(hd4k, com.codename1.ui.Display.DENSITY_4K);
dispose();
}//GEN-LAST:event_okActionPerformed
private void select560DensityActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_select560DensityActionPerformed
updateDir(hd560);
}//GEN-LAST:event_select560DensityActionPerformed
private void select2HDDensityActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_select2HDDensityActionPerformed
updateDir(hd2);
}//GEN-LAST:event_select2HDDensityActionPerformed
private void select4kDensityActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_select4kDensityActionPerformed
updateDir(hd4k);
}//GEN-LAST:event_select4kDensityActionPerformed
private void updateLabelImages(JLabel l, int dpi) {
File dir = new File(l.getText());
if(dir.exists() && dir.isDirectory()) {
File[] fileList = dir.listFiles();
for(File f : fileList) {
try {
if(ImageIO.read(f) != null) {
com.codename1.ui.Image img = res.getImage(f.getName());
if(img == null) {
// create new multi-image
EditableResources.MultiImage newImage = new EditableResources.MultiImage();
newImage.setDpi(new int[] {dpi});
newImage.setInternalImages(new com.codename1.ui.EncodedImage[] {com.codename1.ui.EncodedImage.create(new FileInputStream(f))});
res.setMultiImage(f.getName(), newImage);
} else {
// verify this is a multi-image
Object o = res.getResourceObject(f.getName());
if(o instanceof EditableResources.MultiImage) {
EditableResources.MultiImage existing = (EditableResources.MultiImage)o;
EditableResources.MultiImage newImage = new EditableResources.MultiImage();
int[] dpis = new int[existing.getDpi().length + 1];
System.arraycopy(existing.getDpi(), 0, dpis, 0, existing.getDpi().length);
dpis[existing.getDpi().length] = dpi;
com.codename1.ui.EncodedImage[] images = new com.codename1.ui.EncodedImage[existing.getDpi().length + 1];
System.arraycopy(existing.getInternalImages(), 0, images, 0, existing.getDpi().length);
images[existing.getDpi().length] = com.codename1.ui.EncodedImage.create(new FileInputStream(f));
newImage.setDpi(dpis);
newImage.setInternalImages(images);
res.setMultiImage(f.getName(), newImage);
}
}
}
} catch (IOException ex) {
// not an image file proceed
}
}
}
}
private void updateDir(JLabel l) {
File[] result = ResourceEditorView.showOpenFileChooserWithTitle("Select The Directory", true, "Directory");
if(result != null && result.length == 1) {
l.setText(result[0].getAbsolutePath());
}
}
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton cancel;
private javax.swing.JLabel hd;
private javax.swing.JLabel hd2;
private javax.swing.JLabel hd4k;
private javax.swing.JLabel hd560;
private javax.swing.JLabel high;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel11;
private javax.swing.JLabel jLabel12;
private javax.swing.JLabel jLabel13;
private javax.swing.JLabel jLabel14;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel5;
private javax.swing.JLabel jLabel7;
private javax.swing.JLabel jLabel9;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel2;
private javax.swing.JLabel low;
private javax.swing.JLabel medium;
private javax.swing.JButton ok;
private javax.swing.JButton select2HDDensity;
private javax.swing.JButton select4kDensity;
private javax.swing.JButton select560Density;
private javax.swing.JButton selectHDDensity;
private javax.swing.JButton selectHighDensity;
private javax.swing.JButton selectLowDensity;
private javax.swing.JButton selectMediumDensity;
private javax.swing.JButton selectVeryLowDensity;
private javax.swing.JButton selectVeyHighDensity;
private javax.swing.JLabel veryHigh;
private javax.swing.JLabel veryLow;
// End of variables declaration//GEN-END:variables
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy