| 1036 | saving.set(true); |
| 1037 | EventQueue.invokeLater(new Runnable() { |
| 1038 | public void run() { |
| 1039 | final JFrame frame = |
| 1040 | new JFrame("Saving \u201C" + newName + "\u201C..."); |
| 1041 | frame.setDefaultCloseOperation(WindowConstants.HIDE_ON_CLOSE); |
| 1042 | |
| 1043 | Box box = Box.createVerticalBox(); |
| 1044 | box.setBorder(new EmptyBorder(16, 16, 16, 16)); |
| 1045 | |
| 1046 | if (Platform.isMacOS()) { |
| 1047 | frame.setBackground(Color.WHITE); |
| 1048 | } |
| 1049 | |
| 1050 | JLabel label = |
| 1051 | new JLabel("Saving additional files from the sketch folder..."); |
| 1052 | box.add(label); |
| 1053 | box.add(Box.createVerticalStrut(8)); |
| 1054 | |
| 1055 | final JProgressBar progressBar = new JProgressBar(0, 100); |
| 1056 | // no luck, stuck with ugly on OS X |
| 1057 | //progressBar.putClientProperty("JComponent.sizeVariant", "regular"); |
| 1058 | progressBar.setValue(0); |
| 1059 | progressBar.setStringPainted(true); |
| 1060 | box.add(progressBar); |
| 1061 | |
| 1062 | frame.getContentPane().add(box); |
| 1063 | frame.pack(); |
| 1064 | frame.setLocationRelativeTo(editor); |
| 1065 | Toolkit.setIcon(frame); |
| 1066 | frame.setVisible(true); |
| 1067 | |
| 1068 | new SwingWorker<Void, Void>() { |
| 1069 | |
| 1070 | @Override |
| 1071 | protected Void doInBackground() throws Exception { |
| 1072 | addPropertyChangeListener(new PropertyChangeListener() { |
| 1073 | public void propertyChange(PropertyChangeEvent evt) { |
| 1074 | if ("progress".equals(evt.getPropertyName())) { |
| 1075 | progressBar.setValue((Integer) evt.getNewValue()); |
| 1076 | } |
| 1077 | } |
| 1078 | }); |
| 1079 | |
| 1080 | long totalSize = 0; |
| 1081 | for (File copyable : copyItems) { |
| 1082 | totalSize += Util.calcSize(copyable); |
| 1083 | } |
| 1084 | |
| 1085 | long progress = 0; |
| 1086 | setProgress(0); |
| 1087 | for (File copyable : copyItems) { |
| 1088 | if (copyable.isDirectory()) { |
| 1089 | copyDir(copyable, |
| 1090 | new File(newFolder, copyable.getName()), |
| 1091 | progress, totalSize); |
| 1092 | progress += Util.calcSize(copyable); |
| 1093 | } else { |
| 1094 | copyFile(copyable, |
| 1095 | new File(newFolder, copyable.getName()), |