Skip to content

Commit c482297

Browse files
* Restore last selected folder for ease of use.
* Little optimizations in code
1 parent aaad05f commit c482297

File tree

1 file changed

+28
-11
lines changed
  • src/com/tizianobasile/androiddrawablefactory/gui

1 file changed

+28
-11
lines changed

src/com/tizianobasile/androiddrawablefactory/gui/Main.java

Lines changed: 28 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,8 @@ public class Main extends JFrame{
7070
JComboBox<String> sourceDensityComboBox; //list of available densities
7171
LinkedHashMap<String, JCheckBox> densitiesCheckBox; //HashMap that stores the available density checkboxes
7272
JPanel mainPanel, densitiesPanel; //panel containing checkboxes
73+
private File lastUsedSourceDirectory;
74+
private File lastUsedProjectDirectory;
7375
//JProgressBar progressBar;
7476

7577
File sourceImg; //source Image File object
@@ -173,6 +175,9 @@ private void initListeners()
173175
public void mouseClicked(MouseEvent event)
174176
{
175177
JFileChooser imageChooser = new JFileChooser();
178+
if (lastUsedSourceDirectory != null) {
179+
imageChooser.setCurrentDirectory(lastUsedSourceDirectory);
180+
}
176181
imageChooser.setDialogTitle("Select an image");
177182
imageChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
178183
imageChooser.setFileFilter(new FileFilter(){
@@ -199,6 +204,7 @@ public String getDescription() {
199204
case(JFileChooser.APPROVE_OPTION):
200205
try {
201206
sourceImg = new File(imageChooser.getSelectedFile().getPath());
207+
lastUsedSourceDirectory = sourceImg.getParentFile();
202208
sourceFileName = sourceImg.getName();
203209
bufferedSource = ImageIO.read(sourceImg);
204210
Image sourceResized = ImageUtils.resizeImage(bufferedSource, 80, 80);
@@ -225,15 +231,16 @@ public void mouseReleased(MouseEvent arg0){}
225231
public void actionPerformed(ActionEvent event)
226232
{
227233
projectPathChooser = new JFileChooser();
228-
projectPathChooser.setDialogTitle("Select you app's project path");
234+
if (lastUsedProjectDirectory != null) {
235+
projectPathChooser.setCurrentDirectory(lastUsedProjectDirectory);
236+
}
237+
projectPathChooser.setDialogTitle("Project root directory of your app");
229238
projectPathChooser.setAcceptAllFileFilterUsed(false);
230239
projectPathChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
231-
switch(projectPathChooser.showOpenDialog(projectPathButton))
232-
{
233-
case JFileChooser.APPROVE_OPTION:
234-
projectPathField.setText(projectPathChooser.getSelectedFile().getPath());
235-
break;
236-
}
240+
if(projectPathChooser.showOpenDialog(projectPathButton) == JFileChooser.APPROVE_OPTION) {
241+
projectPathField.setText(projectPathChooser.getSelectedFile().getPath());
242+
lastUsedProjectDirectory = projectPathChooser.getSelectedFile();
243+
}
237244
}
238245
});
239246
//"Make" button action listener
@@ -276,6 +283,11 @@ public void run()
276283
for(Map.Entry<String, Double> e : densityMap.entrySet())
277284
{
278285
JCheckBox singleDensity = densitiesCheckBox.get(e.getKey());
286+
String projectPath = projectPathField.getText();
287+
File projectResourceRoot = new File(projectPath);
288+
if (!"res".equals(projectResourceRoot.getName())) {
289+
projectResourceRoot = new File(projectResourceRoot, "res");
290+
}
279291
if(singleDensity.isSelected())
280292
{
281293
String folderName = "drawable-" + e.getKey();
@@ -286,10 +298,10 @@ public void run()
286298

287299
try {
288300
Image newImg = ImageUtils.resizeImage(bufferedSource, newWidth, newHeight);
289-
File targetDir = new File(projectPathField.getText()+File.separator+folderName);
301+
File targetDir = new File(projectResourceRoot, folderName);
290302
boolean dirExists = false;
291303
//check if project dir exists, if not create it
292-
dirExists = targetDir.exists() ? true : targetDir.mkdir();
304+
dirExists = targetDir.exists() || targetDir.mkdir();
293305
if(dirExists)
294306
{
295307
BufferedImage bufImg = new BufferedImage(newImg.getWidth(null), newImg.getHeight(null), BufferedImage.TYPE_INT_ARGB);
@@ -305,8 +317,13 @@ public void run()
305317
}
306318

307319
}
308-
JOptionPane.showMessageDialog(getContentPane(), "Resize Completed!", "Completed", JOptionPane.INFORMATION_MESSAGE);
309-
createButton.setEnabled(true);
320+
javax.swing.SwingUtilities.invokeLater(new Runnable() {
321+
@Override
322+
public void run() {
323+
JOptionPane.showMessageDialog(getContentPane(), "Resize Completed!", "Completed", JOptionPane.INFORMATION_MESSAGE);
324+
createButton.setEnabled(true);
325+
}
326+
});
310327
}
311328
};
312329
}

0 commit comments

Comments
 (0)