Changeset 101 for java/main/src/main/java/com/framsticks/gui/Browser.java
- Timestamp:
- 07/14/13 23:20:04 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
java/main/src/main/java/com/framsticks/gui/Browser.java
r100 r101 1 1 package com.framsticks.gui; 2 2 3 import com.framsticks.communication.File; 4 import com.framsticks.communication.queries.NeedFile; 5 import com.framsticks.communication.queries.NeedFileAcceptor; 3 6 import com.framsticks.core.*; 4 7 import com.framsticks.gui.console.Console; … … 9 12 import com.framsticks.params.annotations.FramsClassAnnotation; 10 13 import com.framsticks.params.annotations.ParamAnnotation; 14 import com.framsticks.parsers.FileSource; 11 15 import com.framsticks.remote.RemoteTree; 12 16 import com.framsticks.util.FramsticksException; … … 22 26 23 27 import javax.swing.*; 28 import javax.swing.filechooser.FileNameExtensionFilter; 24 29 25 30 import org.apache.logging.log4j.Logger; … … 30 35 import java.awt.datatransfer.StringSelection; 31 36 import java.awt.event.ActionEvent; 37 import java.awt.event.ActionListener; 38 import java.awt.event.WindowAdapter; 39 import java.awt.event.WindowEvent; 40 import java.io.IOException; 32 41 import java.util.ArrayList; 33 42 import java.util.LinkedList; 34 43 import java.util.List; 44 import java.util.regex.Matcher; 45 import java.util.regex.Pattern; 46 35 47 import com.framsticks.util.dispatching.RunAt; 48 import com.framsticks.util.lang.Strings; 36 49 37 50 /** … … 132 145 } 133 146 147 protected static final Pattern extensionFilterPattern = Pattern.compile("\\*\\.(\\S+)"); 148 134 149 @AutoAppendAnnotation 135 public void addTree( Tree tree) {150 public void addTree(final Tree tree) { 136 151 log.debug("adding tree: {}", tree); 137 152 tree.setDispatcher(new SwingDispatcher<Tree>()); 138 153 tree.setExceptionHandler(this); 139 154 trees.add(tree); 155 156 final NeedFileAcceptor acceptor = new NeedFileAcceptor() { 157 158 protected boolean done = false; 159 160 @Override 161 public boolean acceptNeed(final NeedFile needFile) { 162 final JFileChooser chooser = new JFileChooser(); 163 final JFrame frame = new JFrame(); 164 165 frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); 166 167 frame.addWindowListener(new WindowAdapter() { 168 @Override 169 public void windowClosing(WindowEvent e) { 170 if (!done) { 171 needFile.getFuture().handle(new FramsticksException().msg("user closed the window")); 172 } 173 frame.setVisible(false); 174 frame.dispose(); 175 } 176 }); 177 178 frame.setTitle(Strings.toStringEmptyProof(needFile.getDescription(), "Choose file")); 179 chooser.setMultiSelectionEnabled(false); 180 Matcher matcher = extensionFilterPattern.matcher(needFile.getSuggestedName()); 181 if (matcher.matches()) { 182 chooser.setFileFilter(new FileNameExtensionFilter(Strings.toStringEmptyProof(needFile.getDescription(), "file"), Strings.takeGroup(needFile.getSuggestedName(), matcher, 1).toString())); 183 } 184 185 frame.getContentPane().add(chooser); 186 187 chooser.addActionListener(new ActionListener() { 188 189 @Override 190 public void actionPerformed(ActionEvent event) { 191 if (event.getActionCommand().equals("CancelSelection")) { 192 needFile.getFuture().handle(new FramsticksException().msg("user cancelled choose")); 193 frame.setVisible(false); 194 frame.dispose(); 195 } 196 if (event.getActionCommand().equals("ApproveSelection")) { 197 File file = null; 198 String filename = chooser.getSelectedFile().getAbsolutePath(); 199 try { 200 file = new File("", new FileSource(filename)); 201 } catch (IOException e) { 202 needFile.getFuture().handle(new FramsticksException().msg("failed to open choosed file").arg("filename", filename).cause(e)); 203 } 204 if (file != null) { 205 done = true; 206 needFile.getFuture().pass(file); 207 } 208 frame.setVisible(false); 209 frame.dispose(); 210 } 211 } 212 }); 213 frame.setVisible(true); 214 return true; 215 } 216 }; 217 218 tree.dispatch(new RunAt<Tree>(this) { 219 @Override 220 protected void runAt() { 221 log.debug("adding need file acceptor: {}", acceptor); 222 tree.addNeedFileAcceptor(Integer.MAX_VALUE, acceptor); 223 } 224 }); 225 140 226 } 141 227 … … 143 229 // final Tree i = trees.get("localhost"); 144 230 // i.dispatch(new RunAt<Tree>(future) { 145 // 146 // 147 // 148 // 149 // 150 // 151 // 152 // 153 // 154 // 155 // 156 // 157 // 158 // 159 // 231 // @Override 232 // protected void runAt() { 233 // TreeOperations.tryGet(i, path, new FutureHandler<Path>(future) { 234 // @Override 235 // protected void result(final Path p) { 236 // future.pass(p); 237 // mainFrame.dispatch(new RunAt<Frame>(future) { 238 // @Override 239 // protected void runAt() { 240 // mainFrame.goTo(p); 241 // } 242 // }); 243 // } 244 // }); 245 // } 160 246 // }); 161 247 } … … 183 269 protected void runAt() { 184 270 final Path p = Path.to(i, "/"); 271 log.debug("adding path: {}", p); 185 272 dispatch(new RunAt<Browser>(this) { 186 273 @Override
Note: See TracChangeset
for help on using the changeset viewer.