Blimp v.0.2 (2004-11-10)
Christian Heimke authored 13 years ago
|
1) /* BlinkenLightsInteractiveMovieProgram
|
Blimp v.1.2.1 (2006-08-01)
Christian Heimke authored 13 years ago
|
2) * version 1.2.1 date 2006-08-01
|
Blimp v.0.6 (2005-03-10)
Christian Heimke authored 13 years ago
|
3) * Copyright (C) 2004-2005: Stefan Schuermans <1stein@schuermans.info>
|
Blimp v.0.2 (2004-11-10)
Christian Heimke authored 13 years ago
|
4) * Copyleft: GNU public license - http://www.gnu.org/copyleft/gpl.html
5) * a blinkenarea.org project
6) * powered by eventphone.de
7) */
8)
9) import java.applet.*;
10) import java.awt.*;
11) import java.awt.event.*;
12) import java.awt.image.*;
13) import javax.swing.*;
14) import javax.swing.border.*;
15) import javax.swing.event.*;
16) import java.io.*;
17) import java.util.*;
18) import java.util.regex.*;
19) import java.net.*;
20)
21) public class Blimp extends JApplet
22) implements Runnable, WindowListener, ActionListener,
23) AdjustmentListener, ChangeListener, FocusListener,
24) DocumentListener, BlinkenFrameEditorListener
25) {
26) //configuration constants
27) static final int constColorCntX = 2, constColorCntY = 4;
28) static final int constColorCnt = constColorCntX * constColorCntY;
|
Blimp v.0.5 (2004-11-19)
Christian Heimke authored 13 years ago
|
29) static final int defHeight = 8, defWidth = 8, defChannels = 1, defMaxval = 127, defDuration = 100;
|
Blimp v.0.2 (2004-11-10)
Christian Heimke authored 13 years ago
|
30)
31) //configuration variables
32) boolean isFullApp = false; //if running as full application
|
Blimp v.0.3 (2004-11-12)
Christian Heimke authored 13 years ago
|
33) String initialFile = null;
|
Blimp v.0.2 (2004-11-10)
Christian Heimke authored 13 years ago
|
34)
35) //GUI elements
36) JFrame frame; //main window (if running as full application)
37) Component dialogParent; //parent to use for dialogs
38) JMenuBar menubar; //menubar in main window
|
Blimp v.1.1 (2005-04-16)
Christian Heimke authored 13 years ago
|
39) JMenu menuFile, menuInfo, menuEdit, menuFrameSel, menuPlay, menuHelp; //menus
|
Blimp v.0.2 (2004-11-10)
Christian Heimke authored 13 years ago
|
40) JMenuItem menuFileNew, menuFileLoad, menuFileSave, menuFileSaveAs, menuFileQuit;
41) JMenuItem menuInfoShow, menuInfoAdd, menuInfoDelete;
|
Blimp v.0.6 (2005-03-10)
Christian Heimke authored 13 years ago
|
42) JMenuItem menuEditResize, menuEditScale;
43) JMenuItem menuEditInsertFrame, menuEditDuplicateFrame, menuEditDeleteFrame;
|
Blimp v.1.1 (2005-04-16)
Christian Heimke authored 13 years ago
|
44) JMenuItem menuFrameSelNone, menuFrameSelSingle, menuFrameSelStart, menuFrameSelEnd;
45) JMenuItem menuFrameSelCopy, menuFrameSelMove, menuFrameSelReverse, menuFrameSelDelete;
46) JMenuItem menuEditImportImages, menuEditImportMovie;
|
Blimp v.0.2 (2004-11-10)
Christian Heimke authored 13 years ago
|
47) JMenuItem menuPlayStart, menuPlayStop;
48) JCheckBoxMenuItem menuPlayBegin, menuPlayLoop;
49) JMenuItem menuHelpAbout;
|
Blimp v.0.6 (2005-03-10)
Christian Heimke authored 13 years ago
|
50) JPanel panel, panelStatus, panelMain, panelFrames, panelOuterFrame; //panels of main window
|
Blimp v.0.2 (2004-11-10)
Christian Heimke authored 13 years ago
|
51) JPanel panelMiddleFrame, panelFrame, panelDuration, panelColors;
|
Blimp v.1.1 (2005-04-16)
Christian Heimke authored 13 years ago
|
52) JLabel labelStatus, labelFrames, labelSelFrames, labelFrameInfo, labelDuration;
|
Blimp v.0.2 (2004-11-10)
Christian Heimke authored 13 years ago
|
53) JScrollBar scrollFrames;
54) JSlider sliderFrameZoom;
55) BlinkenFrameEditor frameEditor;
56) JScrollPane scrollpaneFrame;
57) JTextField textDuration;
58) JPanel panelOuterTools, panelMiddleTools, panelTools, panelActions;
|
Blimp v.1.1 (2005-04-16)
Christian Heimke authored 13 years ago
|
59) JPanel panelOuterEdit, panelMiddleEdit, panelEdit;
|
Blimp v.0.2 (2004-11-10)
Christian Heimke authored 13 years ago
|
60) JToggleButton buttonToolsNone, buttonToolsColorPicker, buttonToolsDot, buttonToolsLine;
61) JToggleButton buttonToolsRect, buttonToolsFilledRect, buttonToolsCircle, buttonToolsFilledCircle;
62) JToggleButton buttonToolsCopy, buttonToolsPaste;
63) ButtonGroup groupTools;
64) JButton buttonActionsInvert, buttonActionsRotate90, buttonActionsRotate180, buttonActionsRotate270;
65) JButton buttonActionsMirrorHor, buttonActionsMirrorVer, buttonActionsMirrorDiag, buttonActionsMirrorDiag2;
66) JButton buttonActionsRollLeft, buttonActionsRollRight, buttonActionsRollUp, buttonActionsRollDown;
67) JButton buttonActionsUndo, buttonActionsRedo;
|
Blimp v.1.1 (2005-04-16)
Christian Heimke authored 13 years ago
|
68) JButton buttonEditInsertFrame, buttonEditDuplicateFrame, buttonEditDeleteFrame;
|
Blimp v.0.2 (2004-11-10)
Christian Heimke authored 13 years ago
|
69) JPanel panelColorsChoose, panelColorsSettings, panelColorsColor, panelColorsAlpha;
70) JToggleButton buttonsColor[];
71) ButtonGroup groupColor;
72) JLabel labelColorsColor, labelColorsAlpha;
73) JButton buttonColorsColor;
74) JSlider sliderColorsAlpha;
75) JTextField textColorsColor, textColorsAlpha;
76)
77) //other variables
78) int colorIdx; //index of selected color
79) Color colors[]; //current colors
80) ImageIcon iconsColor[], iconColorsColor; //color icons shown in color panel
81) javax.swing.Timer timerPlay; //timer used for playing movies
82)
83) //file, movie, frame
84) File curDir = null, curFile = null; //current directory and file
85) BlinkenMovie curMovie = null; //current movie
86) boolean curMovieChanged = false; //if changes have been made to current movie
87) BlinkenFrame curFrame = null; //current frame
|
Blimp v.1.1 (2005-04-16)
Christian Heimke authored 13 years ago
|
88) int frameSelStart = -1, frameSelEnd = -1; //selected frames (none selected yet)
|
Blimp v.0.2 (2004-11-10)
Christian Heimke authored 13 years ago
|
89)
90) //constructor for applet
91) public Blimp( )
92) {
|
Blimp v.0.3 (2004-11-12)
Christian Heimke authored 13 years ago
|
93) isFullApp = false;
|
Blimp v.0.2 (2004-11-10)
Christian Heimke authored 13 years ago
|
94) }
95)
|
Blimp v.0.3 (2004-11-12)
Christian Heimke authored 13 years ago
|
96) //constructor for full application - perhaps load an initial file (filename != null)
97) public Blimp( String filename )
|
Blimp v.0.2 (2004-11-10)
Christian Heimke authored 13 years ago
|
98) {
|
Blimp v.0.3 (2004-11-12)
Christian Heimke authored 13 years ago
|
99) isFullApp = true;
100) initialFile = filename;
|
Blimp v.0.2 (2004-11-10)
Christian Heimke authored 13 years ago
|
101) }
102)
103) //load an image
104) private ImageIcon loadImageIcon( String name )
105) {
106) URL url = Blimp.class.getResource( "images/" + name );
107) if( url != null )
108) return new ImageIcon( url );
109) else
110) return new ImageIcon( new BufferedImage( 1, 1, BufferedImage.TYPE_INT_RGB ) );
111) }
112)
113) //perhaps ask if to save changes and perhaps do it
114) //return true on cancel
115) private boolean askSaveChanges( )
116) {
117) int retVal;
118)
119) //ask only when changes were made
120) if( curMovieChanged )
121) {
122) //ask if to save changes
123) retVal = JOptionPane.showConfirmDialog( dialogParent,
124) "Do You want to save the changes?",
125) "Blimp - Save changes?",
126) JOptionPane.YES_NO_CANCEL_OPTION,
127) JOptionPane.QUESTION_MESSAGE );
128) //cancelled
129) if( retVal == JOptionPane.CANCEL_OPTION )
130) return true;
131) //save
132) if( retVal == JOptionPane.YES_OPTION )
133) actionFileSave( );
134) }
135)
136) //not cancelled
137) return false;
138) }
139)
140) //"File New" was chosen from menu
141) private void actionFileNew( )
142) {
143) //ask if to save changes
144) if( askSaveChanges( ) ) //returns true on cancel
145) return;
146)
147) //create a new movie
148) if( frame != null )
149) frame.setTitle( "Blimp" );
150) labelStatus.setText( "new movie..." );
151) curFile = null;
|
Blimp v.0.5 (2004-11-19)
Christian Heimke authored 13 years ago
|
152) curMovie = new BlinkenMovie( defHeight, defWidth, defChannels, defMaxval );
|
Blimp v.1.2.1 (2006-08-01)
Christian Heimke authored 13 years ago
|
153) curMovie.insertInfo( 0, "creator", "Blimp (version 1.2.1 date 2006-08-01)" );
|
Blimp v.0.5 (2004-11-19)
Christian Heimke authored 13 years ago
|
154) curMovie.insertFrame( 0, new BlinkenFrame( defHeight, defWidth, defChannels, defMaxval, defDuration ) );
|
Blimp v.0.2 (2004-11-10)
Christian Heimke authored 13 years ago
|
155) curMovieChanged = false;
156)
157) //update controls
158) updateFrames( 0 );
159) }
160)
|
Blimp v.0.3 (2004-11-12)
Christian Heimke authored 13 years ago
|
161) //load file (filename is taken from curFile)
162) private void fileLoad( )
163) {
164) if( curMovie.load( curFile.getPath( ) ) )
165) {
166) //success
167) if( frame != null )
168) frame.setTitle( "Blimp - " + curFile.getPath( ) );
169) labelStatus.setText( "movie \"" + curFile.getPath( ) + "\" was loaded successfully..." );
170) curMovieChanged = false;
171) }
172) else
173) {
174) //some error
175) if( frame != null )
176) frame.setTitle( "Blimp" );
177) labelStatus.setText( "movie \"" + curFile.getPath( ) + "\" could not be loaded..." );
178) curFile = null;
179) curMovieChanged = false;
180) }
181)
182) //update controls
183) updateFrames( 0 );
184) }
185)
|
Blimp v.0.2 (2004-11-10)
Christian Heimke authored 13 years ago
|
186) //"File Load" was chosen from menu
187) private void actionFileLoad( )
188) {
189) JFileChooser fileChooser;
190)
191) //ask if to save changes
192) if( askSaveChanges( ) ) //returns true on cancel
193) return;
194)
195) //show file select dialog
196) fileChooser = new JFileChooser( );
197) fileChooser.setDialogTitle( "Blimp - Load..." );
198) fileChooser.setFileFilter( new BlinkenFileFilter( ) );
199) if( curDir != null )
200) fileChooser.setCurrentDirectory( curDir );
201) if( fileChooser.showOpenDialog( dialogParent ) == JFileChooser.APPROVE_OPTION )
202) {
203) //save current directory and current file
204) curDir = fileChooser.getCurrentDirectory( );
205) curFile = fileChooser.getSelectedFile( );
206) //load file
|
Blimp v.0.3 (2004-11-12)
Christian Heimke authored 13 years ago
|
207) fileLoad( );
|
Blimp v.0.2 (2004-11-10)
Christian Heimke authored 13 years ago
|
208) }
209) }
210)
211) //"File Save" was chosen from menu
212) private void actionFileSave( )
213) {
214) //just call "File Save as" if no current file
215) if( curFile == null )
216) {
217) actionFileSaveAs( );
218) return;
219) }
220) //save file
221) if( curMovie.save( curFile.getPath( ) ) )
222) {
223) //success
224) labelStatus.setText( "movie \"" + curFile.getPath( ) + "\" was saved successfully..." );
225) curMovieChanged = false;
226) }
227) else
228) {
229) //some error
230) labelStatus.setText( "movie \"" + curFile.getPath( ) + "\" could not be saved..." );
231) }
232) }
233)
234) //"File Save as" was chosen from menu
235) private void actionFileSaveAs( )
236) {
237) JFileChooser fileChooser;
238)
239) //show file select dialog
240) fileChooser = new JFileChooser( );
241) fileChooser.setDialogTitle( "Blimp - Save as..." );
242) fileChooser.setFileFilter( new BlinkenFileFilter( ) );
243) if( curDir != null )
244) fileChooser.setCurrentDirectory( curDir );
245) if( curFile != null )
246) fileChooser.setSelectedFile( curFile );
247) if( fileChooser.showSaveDialog( dialogParent ) == JFileChooser.APPROVE_OPTION )
248) {
249) //save current directory and file
250) curDir = fileChooser.getCurrentDirectory( );
251) curFile = fileChooser.getSelectedFile( );
252) if( frame != null )
253) frame.setTitle( "Blimp - " + curFile.getPath( ) );
254) //just call "File Save" to do the work
255) actionFileSave( );
256) }
257) }
258)
259) //"File Quit" was chosen from menu
260) private void actionFileQuit( )
261) {
262) //ask if to save changes
263) if( askSaveChanges( ) ) //returns true on cancel
264) return;
265)
266) //only end program if runnning as full application
267) if( isFullApp )
268) System.exit( 0 );
269) }
270)
271) //"Information Show..." was chosen from menu
272) private void actionInfoShow( )
273) {
274) int i, cnt;
275) String info;
276)
277) //get information about movie
278) info = "";
279) cnt = curMovie.getInfoCnt( );
280) for( i = 0; i < cnt; i++ )
281) info += "\n" + curMovie.getInfoType( i ) +
282) ": " + curMovie.getInfoData( i );
283)
284) //show information
285) JOptionPane.showMessageDialog( dialogParent,
286) "Information about movie:\n" + info,
287) "Blimp - Show Information...",
288) JOptionPane.INFORMATION_MESSAGE );
289) }
290)
291) //"Information Add..." was chosen from menu
292) private void actionInfoAdd( )
293) {
294) Pattern infoPattern;
295) Object info;
296) Matcher infoMatcher;
297)
298) //initialize info pattern
299) infoPattern = Pattern.compile( "^([A-Za-z0-9]+)(?: *= *|: *)(.*)$" );
300)
301) //ask for information to add
302) info = JOptionPane.showInputDialog( dialogParent,
303) "Please enter the information to add:\n\n" +
304) "The format is: <info-type>: <info-text>\n" +
305) " title: <title of movie>\n" +
306) " description: <short description of movie content>\n" +
307) " creator: <program this movie was created with>\n" +
308) " author: <name of author(s)>\n" +
309) " email: <email address of author>\n" +
310) " url: <homepage of author or of this movie>",
311) "Blimp - Add Information...",
312) JOptionPane.QUESTION_MESSAGE,
313) null, null, "" );
314) //dialog was cancelled
315) if( info == null )
316) return;
317)
318) //add info
319) if( (infoMatcher = infoPattern.matcher( info.toString( ) )).find( ) )
320) curMovie.insertInfo( curMovie.getInfoCnt( ), infoMatcher.group( 1 ), infoMatcher.group( 2 ) );
321) else
322) curMovie.insertInfo( curMovie.getInfoCnt( ), "description", info.toString( ) );
323) curMovieChanged = true;
324) }
325)
326) //"Information Delete..." was chosen from menu
327) private void actionInfoDelete( )
328) {
329) int i, cnt;
330) String info[];
331) Object selected;
332)
333) //get information about movie
334) cnt = curMovie.getInfoCnt( );
335) info = new String[cnt];
336) for( i = 0; i < cnt; i++ )
337) info[i] = curMovie.getInfoType( i ) + ": " +
338) curMovie.getInfoData( i );
339)
340) //ask for new size
341) selected = JOptionPane.showInputDialog( dialogParent,
342) "Select information to delete:",
343) "Blimp - Delete Information...",
344) JOptionPane.QUESTION_MESSAGE,
345) null, info, null );
346) //dialog was cancelled
347) if( selected == null )
348) return;
349)
350) //delete sected information
351) for( i = 0; i < cnt; i++ )
352) if( info[i] == selected )
353) break;
354) if( i < cnt )
355) {
356) curMovie.deleteInfo( i );
357) curMovieChanged = true;
358) }
359) }
360)
361) //"Edit Resize Movie..." was chosen from menu
362) private void actionEditResize( )
363) {
364) Pattern sizePattern;
365) String curSize;
366) Object size;
367) Matcher sizeMatcher;
368)
369) //initialize size pattern
370) sizePattern = Pattern.compile( "^([0-9]+)x([0-9]+)-([0-9]+)/([0-9]+)$" );
371)
372) //get string with current movie size
373) curSize = curMovie.getWidth( ) + "x" +
374) curMovie.getHeight( ) + "-" +
375) curMovie.getChannels( ) + "/" +
376) (curMovie.getMaxval( ) + 1);
377)
378) //ask until cancel or answer is valid
379) size = curSize;
380) do
381) {
382) //ask for new size
383) size = JOptionPane.showInputDialog( dialogParent,
384) "Current movie size is: " + curSize + "\n\n" +
385) "The format is: <width>x<height>-<channels>/<colors>\n" +
386) " 18x8-1/2 (Blinkenlights)\n" +
387) " 18x8-1/16 (Blinkenlights Reloaded)\n" +
388) " 26x20-1/16 (Blinkenlights Arcade)\n" +
389) " 104x32-1/128 (TROIA big walls)\n" +
390) " 80x32-1/128 (TROIA small walls)\n" +
|
Blimp v.1.2.1 (2006-08-01)
Christian Heimke authored 13 years ago
|
391) " 104x80-1/128 (TROIA floor + ceiling)\n" +
392) " 98x7-1/128 (bluebox)\n\n" +
|
Blimp v.0.2 (2004-11-10)
Christian Heimke authored 13 years ago
|
393) "Please enter the new movie size:",
394) "Blimp - Resize Movie...",
395) JOptionPane.QUESTION_MESSAGE,
396) null, null, size );
397) //dialog was cancelled
398) if( size == null )
399) return;
400) }
401) while( ! (sizeMatcher = sizePattern.matcher( size.toString( ) )).find( ) ); //repeat question if answer not valid
402)
403) //resize movie
404) curMovie.resize( Integer.parseInt( sizeMatcher.group( 2 ) ),
405) Integer.parseInt( sizeMatcher.group( 1 ) ),
406) Integer.parseInt( sizeMatcher.group( 3 ) ),
407) Integer.parseInt( sizeMatcher.group( 4 ) ) - 1 );
408) curMovieChanged = true;
409)
410) //update controls
411) updateFrames( scrollFrames.getValue( ) );
412)
413) //update status
414) labelStatus.setText( "movie resized successfully to " + size.toString( ) + "..." );
415) }
416)
|
Blimp v.0.3 (2004-11-12)
Christian Heimke authored 13 years ago
|
417) //"Edit Scale Movie..." was chosen from menu
418) private void actionEditScale( )
419) {
420) Pattern dimPattern;
421) String curDim, curSize;
422) Object dim;
423) Matcher dimMatcher;
424)
425) //initialize dimension pattern
426) dimPattern = Pattern.compile( "^([0-9]+)x([0-9]+)$" );
427)
428) //get string with current movie size
429) curDim = curMovie.getWidth( ) + "x" +
430) curMovie.getHeight( );
431) curSize = curMovie.getWidth( ) + "x" +
432) curMovie.getHeight( ) + "-" +
433) curMovie.getChannels( ) + "/" +
434) (curMovie.getMaxval( ) + 1);
435)
436) //ask until cancel or answer is valid
437) dim = curDim;
438) do
439) {
440) //ask for new size
441) dim = JOptionPane.showInputDialog( dialogParent,
442) "Current movie dimension is: " + curDim + " (" + curSize + ")\n\n" +
443) "The format is: <width>x<height>\n" +
444) " 18x8 (Blinkenlights, Blinkenlights Reloaded)\n" +
445) " 26x20 (Blinkenlights Arcade)\n" +
446) " 104x32 (TROIA big walls)\n" +
447) " 80x32 (TROIA small walls)\n" +
|
Blimp v.1.2.1 (2006-08-01)
Christian Heimke authored 13 years ago
|
448) " 104x80 (TROIA floor + ceiling)\n" +
449) " 98x7 (bluebox)\n\n" +
|
Blimp v.0.3 (2004-11-12)
Christian Heimke authored 13 years ago
|
450) "Please enter the new movie dimension:",
451) "Blimp - Scale Movie...",
452) JOptionPane.QUESTION_MESSAGE,
453) null, null, dim );
454) //dialog was cancelled
455) if( dim == null )
456) return;
457) }
458) while( ! (dimMatcher = dimPattern.matcher( dim.toString( ) )).find( ) ); //repeat question if answer not valid
459)
460) //scale movie
461) curMovie.scale( Integer.parseInt( dimMatcher.group( 2 ) ),
462) Integer.parseInt( dimMatcher.group( 1 ) ) );
463) curMovieChanged = true;
464)
465) //update controls
466) updateFrames( scrollFrames.getValue( ) );
467)
468) //update status
469) labelStatus.setText( "movie scaled successfully to " + dim.toString( ) + "..." );
470) }
471)
|
Blimp v.1.1 (2005-04-16)
Christian Heimke authored 13 years ago
|
472) //"Edit Insert Frame" was chosen from menu / Insert Frame button was pressed
|
Blimp v.0.2 (2004-11-10)
Christian Heimke authored 13 years ago
|
473) private void actionEditInsertFrame( )
474) {
475) BlinkenFrame frame;
476) int frameCnt, frameNo;
477)
478) //create new empty frame
479) frame = new BlinkenFrame( curMovie.getHeight( ), curMovie.getWidth( ),
|
Blimp v.0.5 (2004-11-19)
Christian Heimke authored 13 years ago
|
480) curMovie.getChannels( ), curMovie.getMaxval( ), defDuration );
|
Blimp v.0.2 (2004-11-10)
Christian Heimke authored 13 years ago
|
481) frame.clear( );
|
Blimp v.1.1 (2005-04-16)
Christian Heimke authored 13 years ago
|
482) //copy duration if there is a current frame
483) if( curFrame != null )
484) frame.setDuration( curFrame.getDuration( ) );
|
Blimp v.0.2 (2004-11-10)
Christian Heimke authored 13 years ago
|
485)
486) //insert frame behind current position
487) frameCnt = curMovie.getFrameCnt( );
488) frameNo = scrollFrames.getValue( ) + 1;
489) if( frameNo < 0 )
490) frameNo = 0;
491) if( frameNo > frameCnt )
492) frameNo = frameCnt;
493) curMovie.insertFrame( frameNo, frame );
494) curMovieChanged = true;
495)
496) //update controls
497) updateFrames( frameNo );
498) }
499)
|
Blimp v.1.1 (2005-04-16)
Christian Heimke authored 13 years ago
|
500) //"Edit Duplicate Frame" was chosen from menu / Duplicate Frame button was pressed
|
Blimp v.0.2 (2004-11-10)
Christian Heimke authored 13 years ago
|
501) private void actionEditDuplicateFrame( )
502) {
503) BlinkenFrame frame;
504) int frameCnt, frameNo;
505)
506) //do nothing if there is no current frame
507) if( curFrame == null )
508) return;
509)
510) //duplicate current frame
511) frame = new BlinkenFrame( curFrame );
512)
513) //insert frame behind current position
514) frameCnt = curMovie.getFrameCnt( );
515) frameNo = scrollFrames.getValue( ) + 1;
516) if( frameNo < 0 )
517) frameNo = 0;
518) if( frameNo > frameCnt )
519) frameNo = frameCnt;
520) curMovie.insertFrame( frameNo, frame );
521) curMovieChanged = true;
522)
523) //update controls
524) updateFrames( frameNo );
525) }
526)
|
Blimp v.1.1 (2005-04-16)
Christian Heimke authored 13 years ago
|
527) //"Edit Delete Frame" was chosen from menu / Delete Frame button was pressed
|
Blimp v.0.2 (2004-11-10)
Christian Heimke authored 13 years ago
|
528) private void actionEditDeleteFrame( )
529) {
530) int frameNo;
531)
532) //do nothing if there is no current frame
533) if( curFrame == null )
534) return;
535)
536) //delete current frame
537) frameNo = scrollFrames.getValue( );
538) curMovie.deleteFrame( frameNo );
539) frameNo--;
540) curMovieChanged = true;
541)
542) //update controls
543) updateFrames( frameNo );
544) }
545)
|
Blimp v.1.1 (2005-04-16)
Christian Heimke authored 13 years ago
|
546) //"Edit Import Images..." was chosen from menu
547) private void actionEditImportImages( )
|
Blimp v.0.6 (2005-03-10)
Christian Heimke authored 13 years ago
|
548) {
549) JFileChooser fileChooser;
|
Blimp v.1.1 (2005-04-16)
Christian Heimke authored 13 years ago
|
550) File files[];
|
Blimp v.0.6 (2005-03-10)
Christian Heimke authored 13 years ago
|
551) ImageIcon icon;
552) Image image;
553) BufferedImage bufferedImage;
554) BlinkenFrame frame;
|
Blimp v.1.1 (2005-04-16)
Christian Heimke authored 13 years ago
|
555) int width, height, x, y, i, frameCnt, frameNo;
|
Blimp v.0.6 (2005-03-10)
Christian Heimke authored 13 years ago
|
556)
557) //show file select dialog
558) fileChooser = new JFileChooser( );
|
Blimp v.1.1 (2005-04-16)
Christian Heimke authored 13 years ago
|
559) fileChooser.setDialogTitle( "Blimp - Import Images..." );
560) fileChooser.setMultiSelectionEnabled( true );
|
Blimp v.0.6 (2005-03-10)
Christian Heimke authored 13 years ago
|
561) if( curDir != null )
562) fileChooser.setCurrentDirectory( curDir );
563) if( fileChooser.showOpenDialog( dialogParent ) != JFileChooser.APPROVE_OPTION ) //not successful
564) return;
565) //save current directory
566) curDir = fileChooser.getCurrentDirectory( );
567)
|
Blimp v.1.1 (2005-04-16)
Christian Heimke authored 13 years ago
|
568) //get selected files
569) files = fileChooser.getSelectedFiles( );
570) for( i = 0; i < files.length; i++ )
|
Blimp v.0.6 (2005-03-10)
Christian Heimke authored 13 years ago
|
571) {
|
Blimp v.1.1 (2005-04-16)
Christian Heimke authored 13 years ago
|
572)
573) //load image
574) icon = new ImageIcon( files[i].getPath( ) );
575) if( icon == null )
576) {
577) labelStatus.setText( "could not import image \"" + files[i].getPath( ) + "\"..." );
578) break;
579) }
580) width = icon.getIconWidth( );
581) height = icon.getIconHeight( );
582) image = icon.getImage( );
583) if( width <= 0 || height <= 0 || image == null )
584) {
585) labelStatus.setText( "could not import image \"" + files[i].getPath( ) + "\"..." );
586) break;
587) }
588) //convert image to a buffered one
589) bufferedImage = new BufferedImage( width, height, BufferedImage.TYPE_INT_ARGB );
590) bufferedImage.getGraphics( ).drawImage( image, 0, 0, width, height, null );
591)
592) //create new empty frame
593) frame = new BlinkenFrame( height, width,
594) curMovie.getChannels( ), curMovie.getMaxval( ), defDuration );
595) height = frame.getHeight( ); //dimensions might have been invalid and thus been adapted
596) width = frame.getWidth( );
597) frame.clear( );
598) //copy duration if there is a current frame
599) if( curFrame != null )
600) frame.setDuration( curFrame.getDuration( ) );
601)
602) //put pixels of image into frame
603) for( y = 0; y < height; y++ )
604) for( x = 0; x < width; x++ )
605) frame.setColor( y, x, new Color( bufferedImage.getRGB( x, y ) ) );
606)
607) //insert frame behind current position
608) frameCnt = curMovie.getFrameCnt( );
609) frameNo = scrollFrames.getValue( ) + 1;
610) if( frameNo < 0 )
611) frameNo = 0;
612) if( frameNo > frameCnt )
613) frameNo = frameCnt;
614) curMovie.insertFrame( frameNo, frame ); //this resizes the frame to fit the movie dimensions
615) curMovieChanged = true;
616)
617) //show status message
618) labelStatus.setText( "image \"" + files[i].getPath( ) + "\" was successfully imported..." );
619)
620) //update controls
621) updateFrames( frameNo );
622) }
623) }
624)
625) //"Edit Import Movie..." was chosen from menu
626) private void actionEditImportMovie( )
627) {
628) JFileChooser fileChooser;
629) BlinkenMovie movie;
630) BlinkenFrame frame;
631) int frameCnt, frameNo, cnt, i;
632)
633) //show file select dialog
634) fileChooser = new JFileChooser( );
635) fileChooser.setDialogTitle( "Blimp - Import Movie..." );
636) fileChooser.setFileFilter( new BlinkenFileFilter( ) );
637) if( curDir != null )
638) fileChooser.setCurrentDirectory( curDir );
639) if( fileChooser.showOpenDialog( dialogParent ) != JFileChooser.APPROVE_OPTION ) //not successful
|
Blimp v.0.6 (2005-03-10)
Christian Heimke authored 13 years ago
|
640) return;
|
Blimp v.1.1 (2005-04-16)
Christian Heimke authored 13 years ago
|
641) //save current directory
642) curDir = fileChooser.getCurrentDirectory( );
643)
644) //load movie
645) movie = new BlinkenMovie( 0, 0, 0, 0 );
646) if( ! movie.load( fileChooser.getSelectedFile( ).getPath( ) ) )
647) {
648) //some error
649) labelStatus.setText( "movie \"" + fileChooser.getSelectedFile( ).getPath( ) + "\" could not be imported..." );
|
Blimp v.0.6 (2005-03-10)
Christian Heimke authored 13 years ago
|
650) }
|
Blimp v.1.1 (2005-04-16)
Christian Heimke authored 13 years ago
|
651)
652) //insert frames of movie behind current position
653) frameCnt = curMovie.getFrameCnt( );
654) frameNo = scrollFrames.getValue( ) + 1;
655) if( frameNo < 0 )
656) frameNo = 0;
657) if( frameNo > frameCnt )
658) frameNo = frameCnt;
659) cnt = movie.getFrameCnt( );
660) for( i = 0; i < cnt; i++ )
|
Blimp v.0.6 (2005-03-10)
Christian Heimke authored 13 years ago
|
661) {
|
Blimp v.1.1 (2005-04-16)
Christian Heimke authored 13 years ago
|
662) frame = new BlinkenFrame( movie.getFrame( i ) );
663) curMovie.insertFrame( frameNo + i, frame ); //this resizes the frame to fit the movie dimensions
|
Blimp v.0.6 (2005-03-10)
Christian Heimke authored 13 years ago
|
664) }
|
Blimp v.1.1 (2005-04-16)
Christian Heimke authored 13 years ago
|
665) curMovieChanged = true;
|
Blimp v.0.6 (2005-03-10)
Christian Heimke authored 13 years ago
|
666)
|
Blimp v.1.1 (2005-04-16)
Christian Heimke authored 13 years ago
|
667) //success
668) labelStatus.setText( "movie \"" + fileChooser.getSelectedFile( ).getPath( ) + "\" was successfully imported..." );
|
Blimp v.0.6 (2005-03-10)
Christian Heimke authored 13 years ago
|
669)
|
Blimp v.1.1 (2005-04-16)
Christian Heimke authored 13 years ago
|
670) //update controls
671) updateFrames( frameNo );
672) }
|
Blimp v.0.6 (2005-03-10)
Christian Heimke authored 13 years ago
|
673)
|
Blimp v.1.1 (2005-04-16)
Christian Heimke authored 13 years ago
|
674) //"Frame-Selection Select None" was chosen from menu
675) private void actionFrameSelNone( )
676) {
677) //remove frame selection
678) frameSelStart = -1;
679) frameSelEnd = -1;
680) stateFrameSel( );
681) }
682)
683) //"Frame-Selection Select Single Frame" was chosen from menu
684) private void actionFrameSelSingle( )
685) {
686) //do nothing if there is no current frame
687) if( curFrame == null )
688) return;
689)
690) //select current frame
691) frameSelStart = scrollFrames.getValue( );
692) frameSelEnd = frameSelStart;
693) stateFrameSel( );
694) }
695)
696) //"Frame-Selection Start of Selection" was chosen from menu
697) private void actionFrameSelStart( )
698) {
699) //do nothing if there is no current frame
700) if( curFrame == null )
701) return;
702)
703) //set start of frame selection to current frame
704) frameSelStart = scrollFrames.getValue( );
705) if( frameSelEnd >= curMovie.getFrameCnt( ) || frameSelEnd < frameSelStart )
706) frameSelEnd = frameSelStart;
707) stateFrameSel( );
708) }
709)
710) //"Frame-Selection End of Selection" was chosen from menu
711) private void actionFrameSelEnd( )
712) {
713) //do nothing if there is no current frame
714) if( curFrame == null )
715) return;
716)
717) //set end of frame selection to current frame
718) frameSelEnd = scrollFrames.getValue( );
719) if( frameSelStart < 0 || frameSelStart > frameSelEnd )
720) frameSelStart = frameSelEnd;
721) stateFrameSel( );
722) }
723)
724) //"Frame-Selection Copy" was chosen from menu
725) private void actionFrameSelCopy( )
726) {
727) int frameCnt, frameNo, cnt, i;
728)
729) //do nothing if selection is invalid
|
Blimp v.0.6 (2005-03-10)
Christian Heimke authored 13 years ago
|
730) frameCnt = curMovie.getFrameCnt( );
|
Blimp v.1.1 (2005-04-16)
Christian Heimke authored 13 years ago
|
731) if( 0 > frameSelStart || frameSelStart > frameSelEnd || frameSelEnd >= frameCnt )
732) return;
733)
734) //get copies of selected frames
735) cnt = frameSelEnd - frameSelStart + 1;
736) BlinkenFrame frames[] = new BlinkenFrame[cnt];
737) for( i = 0; i < cnt; i++ )
738) frames[i] = new BlinkenFrame( curMovie.getFrame( frameSelStart + i ) );
739)
740) //insert frames behind current position
|
Blimp v.0.6 (2005-03-10)
Christian Heimke authored 13 years ago
|
741) frameNo = scrollFrames.getValue( ) + 1;
742) if( frameNo < 0 )
743) frameNo = 0;
744) if( frameNo > frameCnt )
745) frameNo = frameCnt;
|
Blimp v.1.1 (2005-04-16)
Christian Heimke authored 13 years ago
|
746) for( i = 0; i < cnt; i++ )
747) curMovie.insertFrame( frameNo + i, frames[i] );
|
Blimp v.0.6 (2005-03-10)
Christian Heimke authored 13 years ago
|
748) curMovieChanged = true;
749)
|
Blimp v.1.1 (2005-04-16)
Christian Heimke authored 13 years ago
|
750) //update controls
751) updateFrames( frameNo );
752)
753) //select newly inserted frames
754) frameSelStart = frameNo;
755) frameSelEnd = frameSelStart + cnt - 1;
756) stateFrameSel( );
757) }
758)
759) //"Frame-Selection Move" was chosen from menu
760) private void actionFrameSelMove( )
761) {
762) int frameCnt, frameNo, cnt, i;
763)
764) //do nothing if selection is invalid
765) frameCnt = curMovie.getFrameCnt( );
766) if( 0 > frameSelStart || frameSelStart > frameSelEnd || frameSelEnd >= frameCnt )
767) return;
768)
769) //get selected frames
770) cnt = frameSelEnd - frameSelStart + 1;
771) BlinkenFrame frames[] = new BlinkenFrame[cnt];
772) for( i = 0; i < cnt; i++ )
773) frames[i] = curMovie.getFrame( frameSelStart + i );
774)
775) //delete selected frames
776) for( i = 0; i < cnt; i++ )
777) curMovie.deleteFrame( frameSelStart );
778)
779) //update number of frames and current position
780) frameCnt -= cnt; //cnt frames were deleted
781) frameNo = scrollFrames.getValue( ); //old position
782) if( frameNo > frameSelEnd ) //was behind last frame of selection
783) frameNo -= cnt;
784) else if( frameNo >= frameSelStart) //was in selection
785) frameNo = frameSelStart - 1;
786)
787) //insert frames behind current position
788) frameNo++;
789) if( frameNo < 0 )
790) frameNo = 0;
791) if( frameNo > frameCnt )
792) frameNo = frameCnt;
793) for( i = 0; i < cnt; i++ )
794) curMovie.insertFrame( frameNo + i, frames[i] );
795) curMovieChanged = true;
796)
797) //update controls
798) updateFrames( frameNo );
799)
800) //select moved frames
801) frameSelStart = frameNo;
802) frameSelEnd = frameSelStart + cnt - 1;
803) stateFrameSel( );
804) }
805)
806) //"Frame-Selection Reverse" was chosen from menu
807) private void actionFrameSelReverse( )
808) {
809) int frameCnt, frameNo, cnt, i;
810)
811) //do nothing if selection is invalid
812) frameCnt = curMovie.getFrameCnt( );
813) if( 0 > frameSelStart || frameSelStart > frameSelEnd || frameSelEnd >= frameCnt )
814) return;
815)
816) //get selected frames
817) cnt = frameSelEnd - frameSelStart + 1;
818) BlinkenFrame frames[] = new BlinkenFrame[cnt];
819) for( i = 0; i < cnt; i++ )
820) frames[i] = curMovie.getFrame( frameSelStart + i );
821)
822) //delete selected frames
823) for( i = 0; i < cnt; i++ )
824) curMovie.deleteFrame( frameSelStart );
825)
826) //insert selected frames in reverse order
827) for( i = 0; i < cnt; i++ )
828) curMovie.insertFrame( frameSelStart, frames[i] );
829) curMovieChanged = true;
830)
831) //update controls - go to reversed frames
832) frameNo = frameSelStart;
833) updateFrames( frameNo );
834)
835) //select reversed frames
836) frameSelStart = frameNo;
837) frameSelEnd = frameSelStart + cnt - 1;
838) stateFrameSel( );
839) }
840)
841) //"Frame-Selection Delete" was chosen from menu
842) private void actionFrameSelDelete( )
843) {
844) int frameCnt, frameNo, cnt, i;
845)
846) //do nothing if selection is invalid
847) frameCnt = curMovie.getFrameCnt( );
848) if( 0 > frameSelStart || frameSelStart > frameSelEnd || frameSelEnd >= frameCnt )
849) return;
850)
851) //delete selected frames
852) cnt = frameSelEnd - frameSelStart + 1;
853) for( i = 0; i < cnt; i++ )
854) curMovie.deleteFrame( frameSelStart );
855) curMovieChanged = true;
856)
857) //update number of frames and current position
858) frameCnt -= cnt; //cnt frames were deleted
859) frameNo = scrollFrames.getValue( ); //old position
860) if( frameNo > frameSelEnd ) //was behind last frame of selection
861) frameNo -= cnt;
862) else if( frameNo >= frameSelStart) //was in selection
863) frameNo = frameSelStart - 1;
|
Blimp v.0.6 (2005-03-10)
Christian Heimke authored 13 years ago
|
864)
865) //update controls
866) updateFrames( frameNo );
867) }
868)
|
Blimp v.0.2 (2004-11-10)
Christian Heimke authored 13 years ago
|
869) //"Play Start" was chosen from menu
870) private void actionPlayStart( )
871) {
872) //select no tool
873) buttonToolsNone.setSelected( true );
874) frameEditor.setTool( BlinkenFrameEditor.toolNone );
875)
876) //disable start, enable stop
877) menuPlayStart.setEnabled( false );
878) menuPlayStop.setEnabled( true );
879)
880) //stop old play timer
881) timerPlay.stop( );
882)
883) //if play shall start from beginning
884) if( menuPlayBegin.getState( ) )
885) {
886) //show first frame
887) if( scrollFrames.getValue( ) != 0 ) //value changes
888) scrollFrames.setValue( 0 ); //play timer will be started again when frame is being shown by scrollbar callback
889) else //value does not change
890) stateFrames( ); //value does not change, no event will be sent, execute callback by hand
891) }
892)
893) //start play timer
894) if( curFrame == null )
895) timerPlay.setInitialDelay( 100 ); //use 100ms as default
896) else
897) timerPlay.setInitialDelay( curFrame.getDuration( ) );
898) timerPlay.restart( );
899) }
900)
901) //"Play Stop" was chosen from menu
902) private void actionPlayStop( )
903) {
904) //stop play timer
905) timerPlay.stop( );
906)
907) //enable start, disable stop
908) menuPlayStart.setEnabled( true );
909) menuPlayStop.setEnabled( false );
910) }
911)
912) //play timer elapsed
913) private void actionPlayTimer( )
914) {
915) int frameCnt, frameNoOld, frameNoNew;
916)
917) //stop play timer
918) timerPlay.stop( );
919)
920) //get number of next frame
921) frameCnt = curMovie.getFrameCnt( );
922) frameNoOld = scrollFrames.getValue( );
923) frameNoNew = frameNoOld + 1;
924) if( frameNoNew >= frameCnt )
925) {
926) frameNoNew = 0;
927) //stop playing if looping is not requested
928) if( ! menuPlayLoop.getState( ) )
929) {
930) //enable start, disable stop
931) menuPlayStart.setEnabled( true );
932) menuPlayStop.setEnabled( false );
933) return;
934) }
935) }
936)
937) //show next frame
938) if( frameNoNew != frameNoOld ) //value changes
939) scrollFrames.setValue( frameNoNew ); //play timer will be started again when frame is being shown by scrollbar callback
940) else //value does not change
941) stateFrames( ); //value does not change, no event will be sent, execute callback by hand
942) }
943)
944) //"Help About" was chosen from menu
945) private void actionHelpAbout( )
946) {
947) JOptionPane.showMessageDialog( dialogParent,
948) "BlinkenLightsInteractiveMovieProgram\n" +
|
Blimp v.1.2.1 (2006-08-01)
Christian Heimke authored 13 years ago
|
949) "version 1.2.1 date 2006-08-01\n" +
|
Blimp v.0.6 (2005-03-10)
Christian Heimke authored 13 years ago
|
950) "Copyright (C) 2004-2005: Stefan Schuermans <1stein@schuermans.info>\n" +
|
Blimp v.0.2 (2004-11-10)
Christian Heimke authored 13 years ago
|
951) "Copyleft: GNU public license - http://www.gnu.org/copyleft/gpl.html\n" +
952) "a blinkenarea.org project\n" +
953) "powered by eventphone.de",
954) "Blimp - About...",
955) JOptionPane.INFORMATION_MESSAGE );
956) }
957)
958) //update frames controls (and go to certaint frame)
959) private void updateFrames( int frameNo )
960) {
|
Blimp v.1.1 (2005-04-16)
Christian Heimke authored 13 years ago
|
961) int frameCnt;
|
Blimp v.0.2 (2004-11-10)
Christian Heimke authored 13 years ago
|
962)
963) //update frames scrollbar range
964) frameCnt = curMovie.getFrameCnt( );
965) if( frameCnt <= 0 )
966) {
|
Blimp v.1.1 (2005-04-16)
Christian Heimke authored 13 years ago
|
967) frameNo = 0;
|
Blimp v.0.2 (2004-11-10)
Christian Heimke authored 13 years ago
|
968) scrollFrames.setValues( 0, 0, 0, 0 );
969) }
970) else
971) {
972) if( frameNo < 0 )
973) frameNo = 0;
974) if( frameNo >= frameCnt )
975) frameNo = frameCnt - 1;
976) scrollFrames.setValues( frameNo, 1, 0, frameCnt );
977) }
978)
|
Blimp v.1.1 (2005-04-16)
Christian Heimke authored 13 years ago
|
979) //select no frames
980) frameSelStart = -1;
981) frameSelEnd = -1;
982) stateFrameSel( );
|
Blimp v.0.2 (2004-11-10)
Christian Heimke authored 13 years ago
|
983)
|
Blimp v.1.1 (2005-04-16)
Christian Heimke authored 13 years ago
|
984) //enable/disable some menu commands and buttons which need a current frame
|
Blimp v.0.2 (2004-11-10)
Christian Heimke authored 13 years ago
|
985) menuEditDuplicateFrame.setEnabled( frameCnt > 0 );
986) menuEditDeleteFrame.setEnabled( frameCnt > 0 );
|
Blimp v.1.1 (2005-04-16)
Christian Heimke authored 13 years ago
|
987) buttonEditDuplicateFrame.setEnabled( frameCnt > 0 );
988) buttonEditDeleteFrame.setEnabled( frameCnt > 0 );
989) menuFrameSelSingle.setEnabled( frameCnt > 0 );
990) menuFrameSelStart.setEnabled( frameCnt > 0 );
991) menuFrameSelEnd.setEnabled( frameCnt > 0 );
|
Blimp v.0.2 (2004-11-10)
Christian Heimke authored 13 years ago
|
992) }
993)
994) //frames scrollbar changed
995) private void stateFrames( )
996) {
997) int frameCnt, frameNo;
998)
999) //update frames scrollbar label
1000) frameCnt = curMovie.getFrameCnt( );
1001) if( frameCnt <= 0 )
1002) {
|
Blimp v.1.1 (2005-04-16)
Christian Heimke authored 13 years ago
|
1003) frameNo = 0;
|
Blimp v.0.2 (2004-11-10)
Christian Heimke authored 13 years ago
|
1004) labelFrames.setText( "frame: -/0" );
1005) curFrame = null;
1006) }
1007) else
1008) {
1009) frameNo = scrollFrames.getValue( );
1010) labelFrames.setText( "frame: " + (frameNo + 1) + "/" + frameCnt );
1011) curFrame = curMovie.getFrame( frameNo );
1012) }
1013)
|
Blimp v.1.1 (2005-04-16)
Christian Heimke authored 13 years ago
|
1014) //update selected frames label
1015) if( 0 > frameSelStart || frameSelStart > frameSelEnd || frameSelEnd >= frameCnt )
1016) labelSelFrames.setText( "selected: -/-" );
1017) else if( frameSelStart > frameNo )
1018) labelSelFrames.setText( "selected: -/" + (frameSelEnd - frameSelStart + 1) );
1019) else if( frameNo > frameSelEnd )
1020) labelSelFrames.setText( "selected: +/" + (frameSelEnd - frameSelStart + 1) );
1021) else
1022) labelSelFrames.setText( "selected: " + (frameNo - frameSelStart + 1) + "/" + (frameSelEnd - frameSelStart + 1) );
1023)
|
Blimp v.0.2 (2004-11-10)
Christian Heimke authored 13 years ago
|
1024) //update frame
1025) frameEditor.setFrame( curFrame );
1026)
1027) //show duration
1028) showDuration( );
1029)
1030) //if currently playing
1031) if( ! menuPlayStart.isEnabled( ) )
1032) {
1033) //stop play timer
1034) timerPlay.stop( );
1035) //start play timer
1036) if( curFrame == null )
1037) timerPlay.setInitialDelay( 100 ); //use 100ms as default
1038) else
1039) timerPlay.setInitialDelay( curFrame.getDuration( ) );
1040) timerPlay.restart( );
1041) }
1042) }
|
Blimp v.1.1 (2005-04-16)
Christian Heimke authored 13 years ago
|
1043)
1044) //frame selection changed
1045) private void stateFrameSel( )
1046) {
1047) boolean valid;
1048) int frameCnt;
1049)
1050) //simulate frames scrollbar change to propagate update
1051) stateFrames( );
1052)
1053) //check if selection is valid
1054) frameCnt = curMovie.getFrameCnt( );
1055) valid = (0 <= frameSelStart && frameSelStart <= frameSelEnd && frameSelEnd < frameCnt);
1056)
1057) //enable/disable some menu commands which need a selection
1058) menuFrameSelCopy.setEnabled( valid );
1059) menuFrameSelMove.setEnabled( valid );
1060) menuFrameSelReverse.setEnabled( valid );
1061) menuFrameSelDelete.setEnabled( valid );
1062) }
|
Blimp v.0.2 (2004-11-10)
Christian Heimke authored 13 years ago
|
1063)
1064) //frame zoom changed
1065) private void stateFrameZoom( )
1066) {
1067) //update frame
1068) frameEditor.setZoom( sliderFrameZoom.getValue( ) );
1069) }
1070)
1071) //show duration
1072) private void showDuration( )
1073) {
1074) if( curFrame == null )
1075) {
1076) textDuration.setEnabled( false );
1077) textDuration.setText( "" );
1078) }
1079) else
1080) {
1081) textDuration.setEnabled( true );
1082) textDuration.setText( "" + curFrame.getDuration( ) );
1083) }
1084) }
1085)
1086) //new frame duration is being entered
1087) private void changeDuration( )
1088) {
1089) int duration;
1090)
1091) try
1092) {
1093) //get new frame duration
1094) duration = Integer.parseInt( textDuration.getText( ) );
1095)
1096) //write new duration into frame (if it really changed)
1097) if( curFrame != null && curFrame.getDuration( ) != duration )
1098) {
1099) curFrame.setDuration( duration );
1100) curMovieChanged = true;
1101) }
1102) }
1103) catch( NumberFormatException e ) { }
1104) }
1105)
1106) //new frame duration was entered
1107) private void validateDuration( )
1108) {
1109) //process changes made to duration
1110) changeDuration( );
1111)
1112) //redisplay new duration
1113) showDuration( );
1114) }
1115)
1116) //generate a color icon from a color
1117) private void iconFromColor( ImageIcon icon, Color color )
1118) {
1119) int height, width, y, x;
1120) boolean yy, xx;
1121) Graphics graphics;
1122)
1123) //get size
1124) height = icon.getIconHeight( );
1125) width = icon.getIconWidth( );
1126)
1127) //get graphics context of icon's image
1128) graphics = icon.getImage( ).getGraphics( );
1129)
1130) //draw background
1131) graphics.setColor( new Color( color.getRed( ), color.getGreen( ), color.getBlue( ) ) );
1132) graphics.fillRect( 0, 0, width / 2, height );
1133) for( y = 0, yy = false; y < height; y += height / 4, yy = ! yy )
1134) {
1135) for( x = width / 2, xx = yy; x < width; x += width / 6, xx = ! xx )
1136) {
1137) if( xx )
1138) graphics.setColor( Color.white );
1139) else
1140) graphics.setColor( Color.black );
1141) graphics.fillRect( x, y, width / 6, height / 4 );
1142) }
1143) }
1144)
1145) //draw foreground in specified color
1146) graphics.setColor( color );
1147) graphics.fillRect( 0, 0, width, height );
1148) }
1149)
1150) //a color was chosen
1151) private void actionColorIdx( int idx )
1152) {
1153) //click on active color
1154) if( idx == colorIdx )
1155) {
1156) //act as if color color select button was pressed
1157) actionColorsColor( );
1158) return;
1159) }
1160)
1161) //set active color index
1162) colorIdx = idx;
1163)
1164) //update color settings
1165) showColorsColor( );
1166) showColorsAlpha( );
1167)
1168) //set color of frame editor to new color
1169) frameEditor.setColor( colors[colorIdx] );
1170) }
1171)
1172) //show color
1173) private void showColorsColor( )
1174) {
1175) int red, green, blue;
1176) String hex;
1177)
1178) //get color components
1179) red = colors[colorIdx].getRed( );
1180) green = colors[colorIdx].getGreen( );
1181) blue = colors[colorIdx].getBlue( );
1182)
1183) //color button
1184) iconFromColor( iconColorsColor, new Color( red, green, blue ) );
1185) buttonColorsColor.repaint( );
1186)
1187) //color text
1188) if( red < 0x10 )
1189) hex = "0" + Integer.toHexString( red );
1190) else
1191) hex = Integer.toHexString( red );
1192) if( green < 0x10 )
1193) hex += "0" + Integer.toHexString( green );
1194) else
1195) hex += Integer.toHexString( green );
1196) if( blue < 0x10 )
1197) hex += "0" + Integer.toHexString( blue );
1198) else
1199) hex += Integer.toHexString( blue );
1200) textColorsColor.setText( hex.toUpperCase( ) );
1201) }
1202)
1203) //color select button was pressed
1204) private void actionColorsColor( )
1205) {
1206) Color color;
1207)
1208) //get current color with full alpha
1209) color = new Color( colors[colorIdx].getRed( ),
1210) colors[colorIdx].getGreen( ),
1211) colors[colorIdx].getBlue( ) );
1212)
1213) //show color select dialog
1214) color = JColorChooser.showDialog( dialogParent,
1215) "Blimp - Choose Color...",
1216) color );
1217) if( color == null ) //dialog was cancelled
1218) return;
1219)
1220) //save new color
1221) colors[colorIdx] = new Color( color.getRed( ),
1222) color.getGreen( ),
1223) color.getBlue( ),
1224) colors[colorIdx].getAlpha( ) );
1225)
1226) //redisplay new color
1227) showColorsColor( );
1228)
1229) //update color icon of active color
1230) iconFromColor( iconsColor[colorIdx], colors[colorIdx] );
1231) buttonsColor[colorIdx].repaint( );
1232)
1233) //set color of frame editor to new color
1234) frameEditor.setColor( colors[colorIdx] );
1235) }
1236)
1237) //new color text is being entered
1238) private void changeColorsColor( )
1239) {
1240) String txt;
1241) int red, green, blue;
1242)
1243) //get color text
1244) txt = textColorsColor.getText( );
1245)
1246) //standard color is black
1247) red = 0;
1248) green = 0;
1249) blue = 0;
1250)
1251) //get new color
1252) try
1253) {
1254) if( txt.length( ) >= 2 )
1255) red = Integer.parseInt( txt.substring( 0, 2 ), 0x10 );
1256) if( txt.length( ) >= 4 )
1257) green = Integer.parseInt( txt.substring( 2, 4 ), 0x10 );
1258) if( txt.length( ) >= 6 )
1259) blue = Integer.parseInt( txt.substring( 4, 6 ), 0x10 );
1260) }
1261) catch( NumberFormatException e ) { }
1262)
1263) //save new color
1264) colors[colorIdx] = new Color( red, green, blue, colors[colorIdx].getAlpha( ) );
1265)
1266) //set color of frame editor to new color
1267) frameEditor.setColor( colors[colorIdx] );
1268) }
1269)
1270) //new color text was entered
1271) private void validateColorsColor( )
1272) {
1273) //process changes
1274) changeColorsColor( );
1275)
1276) //redisplay new color
1277) showColorsColor( );
1278)
1279) //update color icon of active color
1280) iconFromColor( iconsColor[colorIdx], colors[colorIdx] );
1281) buttonsColor[colorIdx].repaint( );
1282) }
1283)
1284) //show color's alpha value
1285) private void showColorsAlpha( )
1286) {
1287) int alpha;
1288) String hex;
1289)
1290) //get alpha value
1291) alpha = colors[colorIdx].getAlpha( );
1292)
1293) //alpha slider
1294) sliderColorsAlpha.setValue( alpha );
1295)
1296) //alpha text
1297) if( alpha < 0x10 )
1298) hex = "0" + Integer.toHexString( alpha );
1299) else
1300) hex = Integer.toHexString( alpha );
1301) textColorsAlpha.setText( hex.toUpperCase( ) );
1302) }
1303)
1304) //color's alpha value changed
1305) private void stateColorsAlpha( )
1306) {
1307) int alpha;
1308) String hex;
1309)
1310) //get new alpha value
1311) alpha = sliderColorsAlpha.getValue( );
1312)
1313) //update active color
1314) colors[colorIdx] = new Color( colors[colorIdx].getRed( ),
1315) colors[colorIdx].getGreen( ),
1316) colors[colorIdx].getBlue( ),
1317) alpha );
1318)
1319) //update alpha text
1320) if( alpha < 0x10 )
1321) hex = "0" + Integer.toHexString( alpha );
1322) else
1323) hex = Integer.toHexString( alpha );
1324) textColorsAlpha.setText( hex.toUpperCase( ) );
1325)
1326) //update color icon of active color
1327) iconFromColor( iconsColor[colorIdx], colors[colorIdx] );
1328) buttonsColor[colorIdx].repaint( );
1329)
1330) //set color of frame editor to new color
1331) frameEditor.setColor( colors[colorIdx] );
1332) }
1333)
1334) //new alpha text is being entered
1335) private void changeColorsAlpha( )
1336) {
1337) String txt;
1338) int alpha;
1339)
1340) //get alpha text
1341) txt = textColorsAlpha.getText( );
1342)
1343) //standard alpha is full
1344) alpha = 255;
1345)
1346) //get new alpha
1347) try
1348) {
1349) if( txt.length( ) >= 2 )
1350) alpha = Integer.parseInt( txt.substring( 0, 2 ), 0x10 );
1351) }
1352) catch( NumberFormatException e ) { }
1353)
1354) //save new alpha
1355) colors[colorIdx] = new Color( colors[colorIdx].getRed( ),
1356) colors[colorIdx].getGreen( ),
1357) colors[colorIdx].getBlue( ),
1358) alpha );
1359)
1360) //set color of frame editor to new color
1361) frameEditor.setColor( colors[colorIdx] );
1362) }
1363)
1364) //new alpha text was entered
1365) private void validateColorsAlpha( )
1366) {
1367) //process changes
1368) changeColorsAlpha( );
1369)
1370) //redisplay new alpha value
1371) showColorsAlpha( );
1372)
1373) //update color icon of active color
1374) iconFromColor( iconsColor[colorIdx], colors[colorIdx] );
1375) buttonsColor[colorIdx].repaint( );
1376) }
1377)
1378) public void windowActivated( WindowEvent e )
1379) {
1380) }
1381)
1382) public void windowDeactivated( WindowEvent e )
1383) {
1384) }
1385)
1386) public void windowOpened( WindowEvent e )
1387) {
1388) }
1389)
1390) public void windowClosing( WindowEvent e )
1391) {
1392) actionFileQuit( ); //act as "File Quit"
1393) }
1394)
1395) public void windowClosed( WindowEvent e )
1396) {
1397) }
1398)
1399) public void windowIconified( WindowEvent e )
1400) {
1401) }
1402)
1403) public void windowDeiconified( WindowEvent e )
1404) {
1405) }
1406)
1407) //some GUI action was perfomed
1408) public void actionPerformed( ActionEvent e )
1409) {
1410) int i;
1411)
1412) if( e.getSource( ) == menuFileNew )
1413) actionFileNew( );
1414) else if( e.getSource( ) == menuFileLoad )
1415) actionFileLoad( );
1416) else if( e.getSource( ) == menuFileSave )
1417) actionFileSave( );
1418) else if( e.getSource( ) == menuFileSaveAs )
1419) actionFileSaveAs( );
1420) else if( e.getSource( ) == menuFileQuit )
1421) actionFileQuit( );
1422) else if( e.getSource( ) == menuInfoShow )
1423) actionInfoShow( );
1424) else if( e.getSource( ) == menuInfoAdd )
1425) actionInfoAdd( );
1426) else if( e.getSource( ) == menuInfoDelete )
1427) actionInfoDelete( );
1428) else if( e.getSource( ) == menuEditResize )
1429) actionEditResize( );
|
Blimp v.0.3 (2004-11-12)
Christian Heimke authored 13 years ago
|
1430) else if( e.getSource( ) == menuEditScale )
1431) actionEditScale( );
|
Blimp v.0.2 (2004-11-10)
Christian Heimke authored 13 years ago
|
1432) else if( e.getSource( ) == menuEditInsertFrame )
1433) actionEditInsertFrame( );
1434) else if( e.getSource( ) == menuEditDuplicateFrame )
1435) actionEditDuplicateFrame( );
1436) else if( e.getSource( ) == menuEditDeleteFrame )
1437) actionEditDeleteFrame( );
|
Blimp v.1.1 (2005-04-16)
Christian Heimke authored 13 years ago
|
1438) else if( e.getSource( ) == menuEditImportImages )
1439) actionEditImportImages( );
1440) else if( e.getSource( ) == menuEditImportMovie )
1441) actionEditImportMovie( );
1442) else if( e.getSource( ) == menuFrameSelNone )
1443) actionFrameSelNone( );
1444) else if( e.getSource( ) == menuFrameSelSingle )
1445) actionFrameSelSingle( );
1446) else if( e.getSource( ) == menuFrameSelStart )
1447) actionFrameSelStart( );
1448) else if( e.getSource( ) == menuFrameSelEnd )
1449) actionFrameSelEnd( );
1450) else if( e.getSource( ) == menuFrameSelCopy )
1451) actionFrameSelCopy( );
1452) else if( e.getSource( ) == menuFrameSelMove )
1453) actionFrameSelMove( );
1454) else if( e.getSource( ) == menuFrameSelReverse )
1455) actionFrameSelReverse( );
1456) else if( e.getSource( ) == menuFrameSelDelete )
1457) actionFrameSelDelete( );
|
Blimp v.0.2 (2004-11-10)
Christian Heimke authored 13 years ago
|
1458) else if( e.getSource( ) == menuPlayStart )
1459) actionPlayStart( );
1460) else if( e.getSource( ) == menuPlayStop )
1461) actionPlayStop( );
1462) else if( e.getSource( ) == timerPlay )
1463) actionPlayTimer( );
1464) else if( e.getSource( ) == menuHelpAbout )
1465) actionHelpAbout( );
1466) else if( e.getSource( ) == textDuration )
1467) validateDuration( );
1468) else if( e.getSource( ) == buttonToolsNone )
1469) frameEditor.setTool( BlinkenFrameEditor.toolNone );
1470) else if( e.getSource( ) == buttonToolsColorPicker )
1471) frameEditor.setTool( BlinkenFrameEditor.toolColorPicker );
1472) else if( e.getSource( ) == buttonToolsDot )
1473) frameEditor.setTool( BlinkenFrameEditor.toolDot );
1474) else if( e.getSource( ) == buttonToolsLine )
1475) frameEditor.setTool( BlinkenFrameEditor.toolLine );
1476) else if( e.getSource( ) == buttonToolsRect )
1477) frameEditor.setTool( BlinkenFrameEditor.toolRect );
1478) else if( e.getSource( ) == buttonToolsFilledRect )
1479) frameEditor.setTool( BlinkenFrameEditor.toolFilledRect );
1480) else if( e.getSource( ) == buttonToolsCircle )
1481) frameEditor.setTool( BlinkenFrameEditor.toolCircle );
1482) else if( e.getSource( ) == buttonToolsFilledCircle )
1483) frameEditor.setTool( BlinkenFrameEditor.toolFilledCircle );
1484) else if( e.getSource( ) == buttonToolsCopy )
1485) frameEditor.setTool( BlinkenFrameEditor.toolCopy );
1486) else if( e.getSource( ) == buttonToolsPaste )
1487) frameEditor.setTool( BlinkenFrameEditor.toolPaste );
1488) else if( e.getSource( ) == buttonActionsInvert )
1489) frameEditor.actionInvert( );
1490) else if( e.getSource( ) == buttonActionsRotate90 )
1491) frameEditor.actionRotate90( );
1492) else if( e.getSource( ) == buttonActionsRotate180 )
1493) frameEditor.actionRotate180( );
1494) else if( e.getSource( ) == buttonActionsRotate270 )
1495) frameEditor.actionRotate270( );
1496) else if( e.getSource( ) == buttonActionsMirrorHor )
1497) frameEditor.actionMirrorHor( );
1498) else if( e.getSource( ) == buttonActionsMirrorVer )
1499) frameEditor.actionMirrorVer( );
1500) else if( e.getSource( ) == buttonActionsMirrorDiag )
1501) frameEditor.actionMirrorDiag( );
1502) else if( e.getSource( ) == buttonActionsMirrorDiag2 )
1503) frameEditor.actionMirrorDiag2( );
1504) else if( e.getSource( ) == buttonActionsRollLeft )
1505) frameEditor.actionRollLeft( );
1506) else if( e.getSource( ) == buttonActionsRollRight )
1507) frameEditor.actionRollRight( );
1508) else if( e.getSource( ) == buttonActionsRollUp )
1509) frameEditor.actionRollUp( );
1510) else if( e.getSource( ) == buttonActionsRollDown )
1511) frameEditor.actionRollDown( );
1512) else if( e.getSource( ) == buttonActionsUndo )
1513) frameEditor.actionUndo( );
1514) else if( e.getSource( ) == buttonActionsRedo )
1515) frameEditor.actionRedo( );
|
Blimp v.1.1 (2005-04-16)
Christian Heimke authored 13 years ago
|
1516) else if( e.getSource( ) == buttonEditInsertFrame )
1517) actionEditInsertFrame( );
1518) else if( e.getSource( ) == buttonEditDuplicateFrame )
1519) actionEditDuplicateFrame( );
1520) else if( e.getSource( ) == buttonEditDeleteFrame )
1521) actionEditDeleteFrame( );
|
Blimp v.0.2 (2004-11-10)
Christian Heimke authored 13 years ago
|
1522) else if( e.getSource( ) == buttonColorsColor )
1523) actionColorsColor( );
1524) else if( e.getSource( ) == textColorsColor )
1525) validateColorsColor( );
1526) else if( e.getSource( ) == textColorsAlpha )
1527) validateColorsAlpha( );
1528) else
1529) {
1530) for( i = 0; i < constColorCnt; i++ )
1531) if( e.getSource( ) == buttonsColor[i] )
1532) break;
1533) if( i < constColorCnt )
1534) actionColorIdx( i );
1535) }
1536) }
1537)
1538) //some GUI value was adjusted
1539) public void adjustmentValueChanged( AdjustmentEvent e )
1540) {
1541) if( e.getSource( ) == scrollFrames )
1542) stateFrames( );
1543) }
1544)
1545) //some GUI state changed
1546) public void stateChanged( ChangeEvent e )
1547) {
1548) if( e.getSource( ) == sliderFrameZoom )
1549) stateFrameZoom( );
1550) else if( e.getSource( ) == sliderColorsAlpha )
1551) stateColorsAlpha( );
1552) }
1553)
1554) //a control got the focus
1555) public void focusGained( FocusEvent e )
1556) {
1557) }
1558)
1559) //a control lost the focus
1560) public void focusLost( FocusEvent e )
1561) {
1562) if( e.getSource( ) == textDuration )
1563) validateDuration( );
1564) else if( e.getSource( ) == textColorsColor )
1565) validateColorsColor( );
1566) else if( e.getSource( ) == textColorsAlpha )
1567) validateColorsAlpha( );
1568) }
1569)
1570) //something was changed in a document
1571) public void changedUpdate( DocumentEvent e )
1572) {
1573) if( e.getDocument( ) == textDuration.getDocument( ) )
1574) changeDuration( );
1575) else if( e.getDocument( ) == textColorsColor.getDocument( ) )
1576) changeColorsColor( );
1577) else if( e.getDocument( ) == textColorsAlpha.getDocument( ) )
1578) changeColorsAlpha( );
1579) }
1580)
1581) //something was inserted into a document
1582) public void insertUpdate( DocumentEvent e )
1583) {
1584) if( e.getDocument( ) == textDuration.getDocument( ) )
1585) changeDuration( );
1586) }
1587)
1588) //something was removed from a document
1589) public void removeUpdate( DocumentEvent e )
1590) {
1591) if( e.getDocument( ) == textDuration.getDocument( ) )
1592) changeDuration( );
1593) }
1594)
1595) //info text of frame editor changed
1596) public void blinkenFrameEditorInfo( String info )
1597) {
1598) labelFrameInfo.setText( info );
1599) }
1600)
1601) //a color was picked in the frame editor
1602) public void blinkenFrameEditorColorPicked( Color color )
1603) {
1604) //save new color
1605) colors[colorIdx] = color;
1606)
1607) //redisplay new color (incl. alpha)
1608) showColorsColor( );
1609) showColorsAlpha( );
1610)
1611) //update color icon of active color
1612) iconFromColor( iconsColor[colorIdx], colors[colorIdx] );
1613) buttonsColor[colorIdx].repaint( );
1614)
1615) //set color of frame editor to new color
1616) frameEditor.setColor( colors[colorIdx] );
1617) }
1618)
1619) //the current frame was changed in the frame editor
1620) public void blinkenFrameEditorFrameChanged( )
1621) {
1622) curMovieChanged = true;
1623) }
1624)
1625) //the possibility to perfon an undo or redo operation changed
1626) public void blinkenFrameEditorCanUndoRedo( boolean canUndo, boolean canRedo )
1627) {
1628) buttonActionsUndo.setEnabled( canUndo );
1629) buttonActionsRedo.setEnabled( canRedo );
1630) }
1631)
1632) //entry point of main thread
1633) public void run( )
1634) {
1635) int i, val;
1636) Dimension size;
1637) Insets smallMargin;
1638)
1639) //initialize current movie, frame
1640) curDir = new File( "." );
|
Blimp v.0.5 (2004-11-19)
Christian Heimke authored 13 years ago
|
1641) curMovie = new BlinkenMovie( defHeight, defWidth, defChannels, defMaxval );
|
Blimp v.1.2.1 (2006-08-01)
Christian Heimke authored 13 years ago
|
1642) curMovie.insertInfo( 0, "creator", "Blimp (version 1.2.1 date 2006-08-01)" );
|
Blimp v.0.5 (2004-11-19)
Christian Heimke authored 13 years ago
|
1643) curMovie.insertFrame( 0, new BlinkenFrame( defHeight, defWidth, defChannels, defMaxval, defDuration ) );
|
Blimp v.0.2 (2004-11-10)
Christian Heimke authored 13 years ago
|
1644) curFrame = null;
1645)
1646) //runnning as full application
1647) if( isFullApp )
1648) {
1649) //create main window
1650) JFrame.setDefaultLookAndFeelDecorated( true );
1651) frame = new JFrame( "Blimp" );
1652) frame.setDefaultCloseOperation( JFrame.DO_NOTHING_ON_CLOSE );
1653) frame.addWindowListener( this );
1654) //create menu bar
1655) menubar = new JMenuBar( );
1656) frame.setJMenuBar( menubar );
1657) //create main panel
1658) panel = new JPanel( new BorderLayout( 5, 5 ) );
1659) frame.getContentPane( ).add( panel );
1660) //use main window as parent for dialogs
1661) dialogParent = frame;
1662) }
1663) //runnning as applet
1664) else
1665) {
1666) //no main window - applet is main window
1667) frame = null;
1668) //create menu bar
1669) menubar = new JMenuBar( );
1670) setJMenuBar( menubar );
1671) //create main panel
1672) panel = new JPanel( new BorderLayout( 5, 5 ) );
1673) getContentPane( ).add( panel );
1674) //use applet as parent for dialogs
1675) dialogParent = this;
1676) }
1677)
1678) //create menus
1679) //file menu
1680) menuFile = new JMenu( "File" );
|
Blimp v.1.1 (2005-04-16)
Christian Heimke authored 13 years ago
|
1681) menuFile.setMnemonic( KeyEvent.VK_F );
|
Blimp v.0.2 (2004-11-10)
Christian Heimke authored 13 years ago
|
1682) menubar.add( menuFile );
1683) menuFileNew = new JMenuItem( "New" );
|
Blimp v.1.1 (2005-04-16)
Christian Heimke authored 13 years ago
|
1684) menuFileNew.setMnemonic( KeyEvent.VK_N );
1685) menuFileNew.setAccelerator( KeyStroke.getKeyStroke( KeyEvent.VK_N, KeyEvent.CTRL_MASK ) );
|
Blimp v.0.2 (2004-11-10)
Christian Heimke authored 13 years ago
|
1686) menuFileNew.addActionListener( this );
1687) menuFile.add( menuFileNew );
1688) menuFileLoad = new JMenuItem( "Load..." );
|
Blimp v.1.1 (2005-04-16)
Christian Heimke authored 13 years ago
|
1689) menuFileLoad.setMnemonic( KeyEvent.VK_L );
1690) menuFileLoad.setAccelerator( KeyStroke.getKeyStroke( KeyEvent.VK_L, KeyEvent.CTRL_MASK ) );
|
Blimp v.0.2 (2004-11-10)
Christian Heimke authored 13 years ago
|
1691) menuFileLoad.addActionListener( this );
1692) menuFile.add( menuFileLoad );
1693) menuFileSave = new JMenuItem( "Save" );
|
Blimp v.1.1 (2005-04-16)
Christian Heimke authored 13 years ago
|
1694) menuFileSave.setMnemonic( KeyEvent.VK_S );
1695) menuFileSave.setAccelerator( KeyStroke.getKeyStroke( KeyEvent.VK_S, KeyEvent.CTRL_MASK ) );
|
Blimp v.0.2 (2004-11-10)
Christian Heimke authored 13 years ago
|
1696) menuFileSave.addActionListener( this );
1697) menuFile.add( menuFileSave );
1698) menuFileSaveAs = new JMenuItem( "Save as..." );
|
Blimp v.1.1 (2005-04-16)
Christian Heimke authored 13 years ago
|
1699) menuFileSaveAs.setMnemonic( KeyEvent.VK_A );
1700) menuFileSaveAs.setDisplayedMnemonicIndex( 5 );
1701) menuFileSaveAs.setAccelerator( KeyStroke.getKeyStroke( KeyEvent.VK_A, KeyEvent.CTRL_MASK ) );
|
Blimp v.0.2 (2004-11-10)
Christian Heimke authored 13 years ago
|
1702) menuFileSaveAs.addActionListener( this );
1703) menuFile.add( menuFileSaveAs );
1704) if( isFullApp )
1705) menuFile.addSeparator( );
1706) menuFileQuit = new JMenuItem( "Quit" );
|
Blimp v.1.1 (2005-04-16)
Christian Heimke authored 13 years ago
|
1707) menuFileQuit.setMnemonic( KeyEvent.VK_Q );
|
Blimp v.0.2 (2004-11-10)
Christian Heimke authored 13 years ago
|
1708) menuFileQuit.addActionListener( this );
1709) if( isFullApp )
1710) menuFile.add( menuFileQuit );
1711) //information menu
1712) menuInfo = new JMenu( "Information" );
|
Blimp v.1.1 (2005-04-16)
Christian Heimke authored 13 years ago
|
1713) menuInfo.setMnemonic( KeyEvent.VK_I );
|
Blimp v.0.2 (2004-11-10)
Christian Heimke authored 13 years ago
|
1714) menubar.add( menuInfo );
1715) menuInfoShow = new JMenuItem( "Show..." );
|
Blimp v.1.1 (2005-04-16)
Christian Heimke authored 13 years ago
|
1716) menuInfoShow.setMnemonic( KeyEvent.VK_S );
|
Blimp v.0.2 (2004-11-10)
Christian Heimke authored 13 years ago
|
1717) menuInfoShow.addActionListener( this );
1718) menuInfo.add( menuInfoShow );
1719) menuInfoAdd = new JMenuItem( "Add..." );
|
Blimp v.1.1 (2005-04-16)
Christian Heimke authored 13 years ago
|
1720) menuInfoAdd.setMnemonic( KeyEvent.VK_A );
|
Blimp v.0.2 (2004-11-10)
Christian Heimke authored 13 years ago
|
1721) menuInfoAdd.addActionListener( this );
1722) menuInfo.add( menuInfoAdd );
1723) menuInfoDelete = new JMenuItem( "Delete..." );
|
Blimp v.1.1 (2005-04-16)
Christian Heimke authored 13 years ago
|
1724) menuInfoDelete.setMnemonic( KeyEvent.VK_D );
|
Blimp v.0.2 (2004-11-10)
Christian Heimke authored 13 years ago
|
1725) menuInfoDelete.addActionListener( this );
1726) menuInfo.add( menuInfoDelete );
1727) //edit menu
1728) menuEdit = new JMenu( "Edit" );
|
Blimp v.1.1 (2005-04-16)
Christian Heimke authored 13 years ago
|
1729) menuEdit.setMnemonic( KeyEvent.VK_E );
|
Blimp v.0.2 (2004-11-10)
Christian Heimke authored 13 years ago
|
1730) menubar.add( menuEdit );
1731) menuEditResize = new JMenuItem( "Resize Movie..." );
|
Blimp v.1.1 (2005-04-16)
Christian Heimke authored 13 years ago
|
1732) menuEditResize.setMnemonic( KeyEvent.VK_R );
|
Blimp v.0.2 (2004-11-10)
Christian Heimke authored 13 years ago
|
1733) menuEditResize.addActionListener( this );
1734) menuEdit.add( menuEditResize );
|
Blimp v.0.3 (2004-11-12)
Christian Heimke authored 13 years ago
|
1735) menuEditScale = new JMenuItem( "Scale Movie..." );
|
Blimp v.1.1 (2005-04-16)
Christian Heimke authored 13 years ago
|
1736) menuEditScale.setMnemonic( KeyEvent.VK_S );
|
Blimp v.0.3 (2004-11-12)
Christian Heimke authored 13 years ago
|
1737) menuEditScale.addActionListener( this );
1738) menuEdit.add( menuEditScale );
|
Blimp v.0.2 (2004-11-10)
Christian Heimke authored 13 years ago
|
1739) menuEdit.addSeparator( );
1740) menuEditInsertFrame = new JMenuItem( "Insert Frame" );
|
Blimp v.1.1 (2005-04-16)
Christian Heimke authored 13 years ago
|
1741) menuEditInsertFrame.setMnemonic( KeyEvent.VK_I );
1742) menuEditInsertFrame.setAccelerator( KeyStroke.getKeyStroke( KeyEvent.VK_I, KeyEvent.CTRL_MASK ) );
|
Blimp v.0.2 (2004-11-10)
Christian Heimke authored 13 years ago
|
1743) menuEditInsertFrame.addActionListener( this );
1744) menuEdit.add( menuEditInsertFrame );
1745) menuEditDuplicateFrame = new JMenuItem( "Duplicate Frame" );
|
Blimp v.1.1 (2005-04-16)
Christian Heimke authored 13 years ago
|
1746) menuEditDuplicateFrame.setMnemonic( KeyEvent.VK_D );
1747) menuEditDuplicateFrame.setAccelerator( KeyStroke.getKeyStroke( KeyEvent.VK_D, KeyEvent.CTRL_MASK ) );
|
Blimp v.0.2 (2004-11-10)
Christian Heimke authored 13 years ago
|
1748) menuEditDuplicateFrame.setEnabled( false );
1749) menuEditDuplicateFrame.addActionListener( this );
1750) menuEdit.add( menuEditDuplicateFrame );
1751) menuEditDeleteFrame = new JMenuItem( "Delete Frame" );
|
Blimp v.1.1 (2005-04-16)
Christian Heimke authored 13 years ago
|
1752) menuEditDeleteFrame.setMnemonic( KeyEvent.VK_L );
1753) menuEditDeleteFrame.setAccelerator( KeyStroke.getKeyStroke( KeyEvent.VK_X, KeyEvent.CTRL_MASK ) );
|
Blimp v.0.2 (2004-11-10)
Christian Heimke authored 13 years ago
|
1754) menuEditDeleteFrame.setEnabled( false );
1755) menuEditDeleteFrame.addActionListener( this );
1756) menuEdit.add( menuEditDeleteFrame );
|
Blimp v.0.6 (2005-03-10)
Christian Heimke authored 13 years ago
|
1757) menuEdit.addSeparator( );
|
Blimp v.1.1 (2005-04-16)
Christian Heimke authored 13 years ago
|
1758) menuEditImportImages = new JMenuItem( "Import Images..." );
1759) menuEditImportImages.setMnemonic( KeyEvent.VK_P );
1760) menuEditImportImages.setDisplayedMnemonicIndex( 7 );
1761) menuEditImportImages.addActionListener( this );
1762) menuEdit.add( menuEditImportImages );
1763) menuEditImportMovie = new JMenuItem( "Import Movie..." );
1764) menuEditImportMovie.setMnemonic( KeyEvent.VK_M );
1765) menuEditImportMovie.setDisplayedMnemonicIndex( 7 );
1766) menuEditImportMovie.addActionListener( this );
1767) menuEdit.add( menuEditImportMovie );
1768) //frame selection menu
1769) menuFrameSel = new JMenu( "Frame-Selection" );
1770) menuFrameSel.setMnemonic( KeyEvent.VK_S );
1771) menubar.add( menuFrameSel );
1772) menuFrameSelNone = new JMenuItem( "Select None" );
1773) menuFrameSelNone.setMnemonic( KeyEvent.VK_N );
1774) menuFrameSelNone.setAccelerator( KeyStroke.getKeyStroke( KeyEvent.VK_N, KeyEvent.CTRL_MASK | KeyEvent.SHIFT_MASK ) );
1775) menuFrameSelNone.addActionListener( this );
1776) menuFrameSel.add( menuFrameSelNone );
1777) menuFrameSelSingle = new JMenuItem( "Select Single Frame" );
1778) menuFrameSelSingle.setMnemonic( KeyEvent.VK_F );
1779) menuFrameSelSingle.setAccelerator( KeyStroke.getKeyStroke( KeyEvent.VK_F, KeyEvent.CTRL_MASK | KeyEvent.SHIFT_MASK ) );
1780) menuFrameSelSingle.setEnabled( false );
1781) menuFrameSelSingle.addActionListener( this );
1782) menuFrameSel.add( menuFrameSelSingle );
1783) menuFrameSelStart = new JMenuItem( "Start of Selection" );
1784) menuFrameSelStart.setMnemonic( KeyEvent.VK_S );
1785) menuFrameSelStart.setAccelerator( KeyStroke.getKeyStroke( KeyEvent.VK_S, KeyEvent.CTRL_MASK | KeyEvent.SHIFT_MASK ) );
1786) menuFrameSelStart.setEnabled( false );
1787) menuFrameSelStart.addActionListener( this );
1788) menuFrameSel.add( menuFrameSelStart );
1789) menuFrameSelEnd = new JMenuItem( "End of Selection" );
1790) menuFrameSelEnd.setMnemonic( KeyEvent.VK_E );
1791) menuFrameSelEnd.setAccelerator( KeyStroke.getKeyStroke( KeyEvent.VK_E, KeyEvent.CTRL_MASK | KeyEvent.SHIFT_MASK ) );
1792) menuFrameSelEnd.setEnabled( false );
1793) menuFrameSelEnd.addActionListener( this );
1794) menuFrameSel.add( menuFrameSelEnd );
1795) menuFrameSel.addSeparator( );
1796) menuFrameSelCopy = new JMenuItem( "Copy" );
1797) menuFrameSelCopy.setMnemonic( KeyEvent.VK_C );
1798) menuFrameSelCopy.setAccelerator( KeyStroke.getKeyStroke( KeyEvent.VK_C, KeyEvent.CTRL_MASK | KeyEvent.SHIFT_MASK ) );
1799) menuFrameSelCopy.setEnabled( false );
1800) menuFrameSelCopy.addActionListener( this );
1801) menuFrameSel.add( menuFrameSelCopy );
1802) menuFrameSelMove = new JMenuItem( "Move" );
1803) menuFrameSelMove.setMnemonic( KeyEvent.VK_M );
1804) menuFrameSelMove.setAccelerator( KeyStroke.getKeyStroke( KeyEvent.VK_M, KeyEvent.CTRL_MASK | KeyEvent.SHIFT_MASK ) );
1805) menuFrameSelMove.setEnabled( false );
1806) menuFrameSelMove.addActionListener( this );
1807) menuFrameSel.add( menuFrameSelMove );
1808) menuFrameSelReverse = new JMenuItem( "Reverse" );
1809) menuFrameSelReverse.setMnemonic( KeyEvent.VK_R );
1810) menuFrameSelReverse.setAccelerator( KeyStroke.getKeyStroke( KeyEvent.VK_R, KeyEvent.CTRL_MASK | KeyEvent.SHIFT_MASK ) );
1811) menuFrameSelReverse.setEnabled( false );
1812) menuFrameSelReverse.addActionListener( this );
1813) menuFrameSel.add( menuFrameSelReverse );
1814) menuFrameSelDelete = new JMenuItem( "Delete" );
1815) menuFrameSelDelete.setMnemonic( KeyEvent.VK_L );
1816) menuFrameSelDelete.setAccelerator( KeyStroke.getKeyStroke( KeyEvent.VK_X, KeyEvent.CTRL_MASK | KeyEvent.SHIFT_MASK ) );
1817) menuFrameSelDelete.setEnabled( false );
1818) menuFrameSelDelete.addActionListener( this );
1819) menuFrameSel.add( menuFrameSelDelete );
|
Blimp v.0.2 (2004-11-10)
Christian Heimke authored 13 years ago
|
1820) //play menu
1821) menuPlay = new JMenu( "Play" );
|
Blimp v.1.1 (2005-04-16)
Christian Heimke authored 13 years ago
|
1822) menuPlay.setMnemonic( KeyEvent.VK_P );
|
Blimp v.0.2 (2004-11-10)
Christian Heimke authored 13 years ago
|
1823) menubar.add( menuPlay );
1824) menuPlayStart = new JMenuItem( "Start" );
|
Blimp v.1.1 (2005-04-16)
Christian Heimke authored 13 years ago
|
1825) menuPlayStart.setMnemonic( KeyEvent.VK_S );
1826) menuPlayStart.setAccelerator( KeyStroke.getKeyStroke( KeyEvent.VK_F11, 0 ) );
|
Blimp v.0.2 (2004-11-10)
Christian Heimke authored 13 years ago
|
1827) menuPlayStart.addActionListener( this );
1828) menuPlay.add( menuPlayStart );
1829) menuPlayStop = new JMenuItem( "Stop" );
|
Blimp v.1.1 (2005-04-16)
Christian Heimke authored 13 years ago
|
1830) menuPlayStop.setMnemonic( KeyEvent.VK_P );
1831) menuPlayStop.setAccelerator( KeyStroke.getKeyStroke( KeyEvent.VK_F12, 0 ) );
|
Blimp v.0.2 (2004-11-10)
Christian Heimke authored 13 years ago
|
1832) menuPlayStop.setEnabled( false );
1833) menuPlayStop.addActionListener( this );
1834) menuPlay.add( menuPlayStop );
1835) menuPlay.addSeparator( );
1836) menuPlayBegin = new JCheckBoxMenuItem( "From Begin", false );
|
Blimp v.1.1 (2005-04-16)
Christian Heimke authored 13 years ago
|
1837) menuPlayBegin.setMnemonic( KeyEvent.VK_B );
|
Blimp v.0.2 (2004-11-10)
Christian Heimke authored 13 years ago
|
1838) menuPlayBegin.addActionListener( this );
1839) menuPlay.add( menuPlayBegin );
1840) menuPlayLoop = new JCheckBoxMenuItem( "Looped", false );
|
Blimp v.1.1 (2005-04-16)
Christian Heimke authored 13 years ago
|
1841) menuPlayLoop.setMnemonic( KeyEvent.VK_L );
|
Blimp v.0.2 (2004-11-10)
Christian Heimke authored 13 years ago
|
1842) menuPlayLoop.addActionListener( this );
1843) menuPlay.add( menuPlayLoop );
1844) //help menu
1845) menuHelp = new JMenu( "Help" );
|
Blimp v.1.1 (2005-04-16)
Christian Heimke authored 13 years ago
|
1846) menuHelp.setMnemonic( KeyEvent.VK_H );
|
Blimp v.0.2 (2004-11-10)
Christian Heimke authored 13 years ago
|
1847) menubar.add( menuHelp );
1848) menuHelpAbout = new JMenuItem( "About..." );
|
Blimp v.1.1 (2005-04-16)
Christian Heimke authored 13 years ago
|
1849) menuHelpAbout.setMnemonic( KeyEvent.VK_A );
|
Blimp v.0.2 (2004-11-10)
Christian Heimke authored 13 years ago
|
1850) menuHelpAbout.addActionListener( this );
1851) menuHelp.add( menuHelpAbout );
1852)
1853) //create controls
1854) smallMargin = new Insets( 1, 1, 1, 1 );
1855) panel.setBorder( new EmptyBorder( 5, 5, 5, 5 ) );
1856) //status bar
1857) panelStatus = new JPanel( new BorderLayout( 5, 5 ) );
1858) panel.add( panelStatus, BorderLayout.SOUTH );
1859) panelStatus.add( new JSeparator( JSeparator.HORIZONTAL ), BorderLayout.NORTH );
1860) labelStatus = new JLabel( "ready..." );
1861) panelStatus.add( labelStatus, BorderLayout.CENTER );
1862) //main panel
1863) panelMain = new JPanel( new BorderLayout( 5, 5 ) );
1864) panel.add( panelMain, BorderLayout.CENTER );
1865) //frames panel
1866) panelFrames = new JPanel( new BorderLayout( 5, 5 ) );
1867) panelMain.add( panelFrames, BorderLayout.SOUTH );
1868) scrollFrames = new JScrollBar( SwingConstants.HORIZONTAL, 0, 0, 0, 0 );
1869) scrollFrames.addAdjustmentListener( this );
1870) panelFrames.add( scrollFrames, BorderLayout.CENTER );
1871) labelFrames = new JLabel( "frame: -/0" );
1872) labelFrames.setLabelFor( scrollFrames );
1873) panelFrames.add( labelFrames, BorderLayout.WEST );
|
Blimp v.1.1 (2005-04-16)
Christian Heimke authored 13 years ago
|
1874) labelSelFrames = new JLabel( "selected: -/-" );
1875) labelSelFrames.setLabelFor( scrollFrames );
1876) panelFrames.add( labelSelFrames, BorderLayout.EAST );
|
Blimp v.0.2 (2004-11-10)
Christian Heimke authored 13 years ago
|
1877) //outer and middle frame panel
1878) panelOuterFrame = new JPanel( new BorderLayout( 5, 5 ) );
1879) panelMain.add( panelOuterFrame, BorderLayout.CENTER );
1880) panelOuterFrame.add( new JSeparator( JSeparator.HORIZONTAL ), BorderLayout.SOUTH );
1881) panelMiddleFrame = new JPanel( new BorderLayout( 5, 5 ) );
1882) panelOuterFrame.add( panelMiddleFrame, BorderLayout.CENTER );
1883) panelMiddleFrame.add( new JSeparator( JSeparator.VERTICAL ), BorderLayout.WEST );
1884) panelMiddleFrame.add( new JSeparator( JSeparator.VERTICAL ), BorderLayout.EAST );
1885) //frame panel
1886) panelFrame = new JPanel( new BorderLayout( 5, 5 ) );
1887) panelMiddleFrame.add( panelFrame, BorderLayout.CENTER );
1888) sliderFrameZoom = new JSlider( JSlider.VERTICAL, 0, 6, 3 );
1889) sliderFrameZoom.setSnapToTicks( true );
1890) sliderFrameZoom.setInverted( true );
1891) sliderFrameZoom.addChangeListener( this );
1892) sliderFrameZoom.setToolTipText( "Zoom" );
1893) panelFrame.add( sliderFrameZoom, BorderLayout.EAST );
1894) frameEditor = new BlinkenFrameEditor( );
1895) frameEditor.setZoom( sliderFrameZoom.getValue( ) );
1896) scrollpaneFrame = new JScrollPane( frameEditor );
1897) panelFrame.add( scrollpaneFrame, BorderLayout.CENTER );
1898) labelFrameInfo = new JLabel( "", JLabel.CENTER );
1899) labelFrameInfo.setLabelFor( frameEditor );
1900) panelFrame.add( labelFrameInfo, BorderLayout.NORTH );
1901) frameEditor.setEditorListener( this );
1902) panelDuration = new JPanel( new FlowLayout( FlowLayout.CENTER, 5, 5 ) );
1903) panelFrame.add( panelDuration, BorderLayout.SOUTH );
1904) textDuration = new JTextField( 5 );
1905) textDuration.setHorizontalAlignment( JTextField.CENTER );
1906) textDuration.setEnabled( false );
1907) textDuration.getDocument( ).addDocumentListener( this );
1908) textDuration.addActionListener( this );
1909) textDuration.addFocusListener( this );
1910) labelDuration = new JLabel( "duration (ms): " );
1911) labelDuration.setLabelFor( textDuration );
1912) panelDuration.add( labelDuration );
1913) panelDuration.add( textDuration );
|
Blimp v.1.1 (2005-04-16)
Christian Heimke authored 13 years ago
|
1914) //tool, action and edit panels
1915) panelOuterEdit = new JPanel( new BorderLayout( 5, 5 ) );
1916) panelOuterFrame.add( panelOuterEdit, BorderLayout.WEST );
|
Blimp v.0.2 (2004-11-10)
Christian Heimke authored 13 years ago
|
1917) panelOuterTools = new JPanel( new GridLayout( 2, 1, 5, 5 ) );
|
Blimp v.1.1 (2005-04-16)
Christian Heimke authored 13 years ago
|
1918) panelOuterEdit.add( panelOuterTools, BorderLayout.CENTER );
|
Blimp v.0.2 (2004-11-10)
Christian Heimke authored 13 years ago
|
1919) panelMiddleTools = new JPanel( new BorderLayout( 5, 5 ) );
1920) panelOuterTools.add( panelMiddleTools );
1921) panelTools = new JPanel( new GridLayout( 4, 3, 5, 5 ) );
1922) panelMiddleTools.add( panelTools, BorderLayout.CENTER );
1923) panelMiddleTools.add( new JSeparator( JSeparator.HORIZONTAL ), BorderLayout.SOUTH );
1924) panelActions = new JPanel( new GridLayout( 5, 3, 5, 5 ) );
1925) panelOuterTools.add( panelActions );
|
Blimp v.1.1 (2005-04-16)
Christian Heimke authored 13 years ago
|
1926) panelMiddleEdit = new JPanel( new BorderLayout( 5, 5 ) );
1927) panelOuterEdit.add( panelMiddleEdit, BorderLayout.SOUTH );
1928) panelMiddleEdit.add( new JSeparator( JSeparator.HORIZONTAL ), BorderLayout.NORTH );
1929) panelEdit = new JPanel( new GridLayout( 1, 3, 5, 5 ) );
1930) panelMiddleEdit.add( panelEdit, BorderLayout.CENTER );
|
Blimp v.0.2 (2004-11-10)
Christian Heimke authored 13 years ago
|
1931) //tool buttons
1932) groupTools = new ButtonGroup( );
1933) buttonToolsNone = new JToggleButton( );
1934) buttonToolsNone.setMargin( smallMargin );
1935) buttonToolsNone.setToolTipText( "no tool" );
1936) buttonToolsNone.addActionListener( this );
1937) groupTools.add( buttonToolsNone );
1938) panelTools.add( buttonToolsNone );
1939) buttonToolsColorPicker = new JToggleButton( loadImageIcon( "ColorPicker.png" ) );
1940) buttonToolsColorPicker.setMargin( smallMargin );
1941) buttonToolsColorPicker.setToolTipText( "Color Picker" );
1942) buttonToolsColorPicker.addActionListener( this );
1943) groupTools.add( buttonToolsColorPicker );
1944) panelTools.add( buttonToolsColorPicker );
1945) buttonToolsDot = new JToggleButton( loadImageIcon( "Dot.png" ) );
1946) buttonToolsDot.setMargin( smallMargin );
1947) buttonToolsDot.setToolTipText( "Dot" );
1948) buttonToolsDot.addActionListener( this );
1949) groupTools.add( buttonToolsDot );
1950) panelTools.add( buttonToolsDot );
1951) buttonToolsLine = new JToggleButton( loadImageIcon( "Line.png" ) );
1952) buttonToolsLine.setMargin( smallMargin );
1953) buttonToolsLine.setToolTipText( "Line" );
1954) buttonToolsLine.addActionListener( this );
1955) groupTools.add( buttonToolsLine );
1956) panelTools.add( buttonToolsLine );
1957) buttonToolsRect = new JToggleButton( loadImageIcon( "Rectangle.png" ) );
1958) buttonToolsRect.setMargin( smallMargin );
1959) buttonToolsRect.setToolTipText( "Rectangle" );
1960) buttonToolsRect.addActionListener( this );
1961) groupTools.add( buttonToolsRect );
1962) panelTools.add( buttonToolsRect );
1963) buttonToolsFilledRect = new JToggleButton( loadImageIcon( "FilledRectangle.png" ) );
1964) buttonToolsFilledRect.setMargin( smallMargin );
1965) buttonToolsFilledRect.setToolTipText( "Filled Rectangle" );
1966) buttonToolsFilledRect.addActionListener( this );
1967) groupTools.add( buttonToolsFilledRect );
1968) panelTools.add( buttonToolsFilledRect );
1969) panelTools.add( new JLabel( ) );
1970) buttonToolsCircle = new JToggleButton( loadImageIcon( "Circle.png" ) );
1971) buttonToolsCircle.setMargin( smallMargin );
1972) buttonToolsCircle.setToolTipText( "Circle" );
1973) buttonToolsCircle.addActionListener( this );
1974) groupTools.add( buttonToolsCircle );
1975) panelTools.add( buttonToolsCircle );
1976) buttonToolsFilledCircle = new JToggleButton( loadImageIcon( "FilledCircle.png" ) );
1977) buttonToolsFilledCircle.setMargin( smallMargin );
1978) buttonToolsFilledCircle.setToolTipText( "Filled Circle" );
1979) buttonToolsFilledCircle.addActionListener( this );
1980) groupTools.add( buttonToolsFilledCircle );
1981) panelTools.add( buttonToolsFilledCircle );
1982) panelTools.add( new JLabel( ) );
1983) buttonToolsCopy = new JToggleButton( loadImageIcon( "Copy.png" ) );
1984) buttonToolsCopy.setMargin( smallMargin );
1985) buttonToolsCopy.setToolTipText( "Copy" );
1986) buttonToolsCopy.addActionListener( this );
1987) groupTools.add( buttonToolsCopy );
1988) panelTools.add( buttonToolsCopy );
1989) buttonToolsPaste = new JToggleButton( loadImageIcon( "Paste.png" ) );
1990) buttonToolsPaste.setMargin( smallMargin );
1991) buttonToolsPaste.setToolTipText( "Paste" );
1992) buttonToolsPaste.addActionListener( this );
1993) groupTools.add( buttonToolsPaste );
1994) panelTools.add( buttonToolsPaste );
1995) buttonToolsNone.setSelected( true );
1996) frameEditor.setTool( BlinkenFrameEditor.toolNone );
1997) //action buttons
1998) buttonActionsInvert = new JButton( loadImageIcon( "Invert.png" ) );
1999) buttonActionsInvert.setMargin( smallMargin );
2000) buttonActionsInvert.setToolTipText( "Invert" );
2001) buttonActionsInvert.addActionListener( this );
2002) panelActions.add( buttonActionsInvert );
2003) buttonActionsMirrorHor = new JButton( loadImageIcon( "MirrorHor.png" ) );
2004) buttonActionsMirrorHor.setMargin( smallMargin );
2005) buttonActionsMirrorHor.setToolTipText( "Mirror Horizontally" );
2006) buttonActionsMirrorHor.addActionListener( this );
2007) panelActions.add( buttonActionsMirrorHor );
2008) buttonActionsRollLeft = new JButton( loadImageIcon( "RollLeft.png" ) );
2009) buttonActionsRollLeft.setMargin( smallMargin );
2010) buttonActionsRollLeft.setToolTipText( "Roll Left" );
2011) buttonActionsRollLeft.addActionListener( this );
2012) panelActions.add( buttonActionsRollLeft );
2013) buttonActionsRotate90 = new JButton( loadImageIcon( "Rotate90.png" ) );
2014) buttonActionsRotate90.setMargin( smallMargin );
2015) buttonActionsRotate90.setToolTipText( "Rotate 90 Degrees" );
2016) buttonActionsRotate90.addActionListener( this );
2017) panelActions.add( buttonActionsRotate90 );
2018) buttonActionsMirrorVer = new JButton( loadImageIcon( "MirrorVer.png" ) );
2019) buttonActionsMirrorVer.setMargin( smallMargin );
2020) buttonActionsMirrorVer.setToolTipText( "Mirror Vertically" );
2021) buttonActionsMirrorVer.addActionListener( this );
2022) panelActions.add( buttonActionsMirrorVer );
2023) buttonActionsRollRight = new JButton( loadImageIcon( "RollRight.png" ) );
2024) buttonActionsRollRight.setMargin( smallMargin );
2025) buttonActionsRollRight.setToolTipText( "Roll Right" );
2026) buttonActionsRollRight.addActionListener( this );
2027) panelActions.add( buttonActionsRollRight );
2028) buttonActionsRotate180 = new JButton( loadImageIcon( "Rotate180.png" ) );
2029) buttonActionsRotate180.setMargin( smallMargin );
2030) buttonActionsRotate180.setToolTipText( "Rotate 180 Degrees" );
2031) buttonActionsRotate180.addActionListener( this );
2032) panelActions.add( buttonActionsRotate180 );
2033) buttonActionsMirrorDiag = new JButton( loadImageIcon( "MirrorDiag.png" ) );
2034) buttonActionsMirrorDiag.setMargin( smallMargin );
2035) buttonActionsMirrorDiag.setToolTipText( "Mirror Diagonally (\\)" );
2036) buttonActionsMirrorDiag.addActionListener( this );
2037) panelActions.add( buttonActionsMirrorDiag );
2038) buttonActionsRollUp = new JButton( loadImageIcon( "RollUp.png" ) );
2039) buttonActionsRollUp.setMargin( smallMargin );
2040) buttonActionsRollUp.setToolTipText( "Roll Up" );
2041) buttonActionsRollUp.addActionListener( this );
2042) panelActions.add( buttonActionsRollUp );
2043) buttonActionsRotate270 = new JButton( loadImageIcon( "Rotate270.png" ) );
2044) buttonActionsRotate270.setMargin( smallMargin );
2045) buttonActionsRotate270.setToolTipText( "Rotate 270 Degrees" );
2046) buttonActionsRotate270.addActionListener( this );
2047) panelActions.add( buttonActionsRotate270 );
2048) buttonActionsMirrorDiag2 = new JButton( loadImageIcon( "MirrorDiag2.png" ) );
2049) buttonActionsMirrorDiag2.setMargin( smallMargin );
2050) buttonActionsMirrorDiag2.setToolTipText( "Mirror Diagonally (/)" );
2051) buttonActionsMirrorDiag2.addActionListener( this );
2052) panelActions.add( buttonActionsMirrorDiag2 );
2053) buttonActionsRollDown = new JButton( loadImageIcon( "RollDown.png" ) );
2054) buttonActionsRollDown.setMargin( smallMargin );
2055) buttonActionsRollDown.setToolTipText( "Roll Down" );
2056) buttonActionsRollDown.addActionListener( this );
2057) panelActions.add( buttonActionsRollDown );
2058) panelActions.add( new JLabel( ) );
2059) buttonActionsUndo = new JButton( loadImageIcon( "Undo.png" ) );
2060) buttonActionsUndo.setMargin( smallMargin );
2061) buttonActionsUndo.setToolTipText( "Undo" );
2062) buttonActionsUndo.setEnabled( false );
2063) buttonActionsUndo.addActionListener( this );
2064) panelActions.add( buttonActionsUndo );
2065) buttonActionsRedo = new JButton( loadImageIcon( "Redo.png" ) );
2066) buttonActionsRedo.setMargin( smallMargin );
2067) buttonActionsRedo.setToolTipText( "Redo" );
2068) buttonActionsRedo.setEnabled( false );
2069) buttonActionsRedo.addActionListener( this );
2070) panelActions.add( buttonActionsRedo );
|
Blimp v.1.1 (2005-04-16)
Christian Heimke authored 13 years ago
|
2071) //edit buttons
2072) buttonEditInsertFrame = new JButton( loadImageIcon( "InsertFrame.png" ) );
2073) buttonEditInsertFrame.setMargin( smallMargin );
2074) buttonEditInsertFrame.setToolTipText( "Insert Frame" );
2075) buttonEditInsertFrame.addActionListener( this );
2076) panelEdit.add( buttonEditInsertFrame );
2077) buttonEditDuplicateFrame = new JButton( loadImageIcon( "DuplicateFrame.png" ) );
2078) buttonEditDuplicateFrame.setMargin( smallMargin );
2079) buttonEditDuplicateFrame.setToolTipText( "Duplicate Frame" );
2080) buttonEditDuplicateFrame.addActionListener( this );
2081) panelEdit.add( buttonEditDuplicateFrame );
2082) buttonEditDeleteFrame = new JButton( loadImageIcon( "DeleteFrame.png" ) );
2083) buttonEditDeleteFrame.setMargin( smallMargin );
2084) buttonEditDeleteFrame.setToolTipText( "Delete Frame" );
2085) buttonEditDeleteFrame.addActionListener( this );
2086) panelEdit.add( buttonEditDeleteFrame );
|
Blimp v.0.2 (2004-11-10)
Christian Heimke authored 13 years ago
|
2087) //color panel
2088) panelColors = new JPanel( new GridLayout( 2, 1, 5, 5 ) );
2089) panelOuterFrame.add( panelColors, BorderLayout.EAST );
2090) panelColorsChoose = new JPanel( new GridLayout( constColorCntY, constColorCntX, 5, 5 ) );
2091) panelColors.add( panelColorsChoose );
2092) buttonsColor = new JToggleButton[constColorCnt];
2093) groupColor = new ButtonGroup( );
2094) for( i = 0; i < constColorCnt; i++ )
2095) {
2096) buttonsColor[i] = new JToggleButton( );
2097) buttonsColor[i].setMargin( smallMargin );
2098) buttonsColor[i].addActionListener( this );
2099) groupColor.add( buttonsColor[i] );
2100) panelColorsChoose.add( buttonsColor[i] );
2101) }
2102) //color panel - settings
2103) panelColorsSettings = new JPanel( new GridLayout( 4, 1, 5, 0 ) );
2104) panelColors.add( panelColorsSettings );
2105) labelColorsColor = new JLabel( "color:" );
2106) labelColorsColor.setVerticalAlignment( JLabel.BOTTOM );
2107) panelColorsSettings.add( labelColorsColor );
2108) panelColorsColor = new JPanel( new FlowLayout( FlowLayout.CENTER, 5, 3 ) );
2109) panelColorsSettings.add( panelColorsColor );
2110) buttonColorsColor = new JButton( );
2111) buttonColorsColor.setMargin( smallMargin );
2112) buttonColorsColor.addActionListener( this );
2113) panelColorsColor.add( buttonColorsColor );
2114) textColorsColor = new JTextField( "FFFFFF", 6 );
2115) textColorsColor.setHorizontalAlignment( JTextField.CENTER );
2116) textColorsColor.addActionListener( this );
2117) textColorsColor.addFocusListener( this );
2118) panelColorsColor.add( textColorsColor );
2119) labelColorsColor.setLabelFor( panelColorsColor );
2120) labelColorsAlpha = new JLabel( "alpha:" );
2121) labelColorsAlpha.setVerticalAlignment( JLabel.BOTTOM );
2122) panelColorsSettings.add( labelColorsAlpha );
2123) panelColorsAlpha = new JPanel( new FlowLayout( FlowLayout.CENTER, 5, 3 ) );
2124) panelColorsSettings.add( panelColorsAlpha );
2125) sliderColorsAlpha = new JSlider( JSlider.HORIZONTAL, 0, 255, 255 );
2126) size = sliderColorsAlpha.getPreferredSize( );
2127) size.width = size.width * 2 / 5;
2128) sliderColorsAlpha.setPreferredSize( size );
2129) sliderColorsAlpha.setSnapToTicks( true );
2130) sliderColorsAlpha.addChangeListener( this );
2131) panelColorsAlpha.add( sliderColorsAlpha );
2132) textColorsAlpha = new JTextField( "FF", 2 );
2133) textColorsAlpha.setHorizontalAlignment( JTextField.CENTER );
2134) textColorsAlpha.addActionListener( this );
2135) textColorsAlpha.addFocusListener( this );
2136) panelColorsAlpha.add( textColorsAlpha );
2137) labelColorsAlpha.setLabelFor( panelColorsAlpha );
2138) //color panel - color icons
2139) colorIdx = 0;
2140) colors = new Color[constColorCnt];
2141) size = textColorsAlpha.getPreferredSize( );
2142) iconsColor = new ImageIcon[constColorCnt];
2143) for( i = 0; i < constColorCnt; i++ )
2144) {
2145) iconsColor[i] = new ImageIcon( new BufferedImage( size.width, size.height, BufferedImage.TYPE_INT_RGB ) );
2146) val = (constColorCnt - 1 - i) * 255 / (constColorCnt - 1);
2147) colors[i] = new Color( val, val, val );
2148) iconFromColor( iconsColor[i], colors[i] );
2149) buttonsColor[i].setIcon( iconsColor[i] );
2150) }
2151) iconColorsColor = new ImageIcon( new BufferedImage( size.width, size.height, BufferedImage.TYPE_INT_RGB ) );
2152) iconFromColor( iconColorsColor, colors[colorIdx] );
2153) buttonColorsColor.setIcon( iconColorsColor );
2154) buttonsColor[colorIdx].setSelected( true );
2155) frameEditor.setColor( colors[colorIdx] );
2156)
2157) //create play timer
2158) timerPlay = new javax.swing.Timer( 100, this );
2159) timerPlay.setRepeats( false );
2160) timerPlay.stop( );
2161)
2162) //update controls
2163) updateFrames( 0 );
2164)
2165) //running as full application
2166) if( isFullApp )
2167) {
2168) //calculate size for main window, menus and controls
2169) frame.pack( );
2170) //show main window
2171) frame.setVisible( true );
2172) }
2173) //running as applet
2174) else
2175) {
2176) //arrange menus and controls
2177) size = getSize( );
2178) resize( 1, 1 );
2179) resize( size );
2180) }
|
Blimp v.0.3 (2004-11-12)
Christian Heimke authored 13 years ago
|
2181)
2182) //load initial file
2183) if( initialFile != null )
2184) {
2185) //set current file and current directory
2186) curFile = (new File( initialFile )).getAbsoluteFile( );
2187) curDir = curFile.getParentFile( );
2188)
2189) //load file
2190) fileLoad( );
2191) }
|
Blimp v.0.2 (2004-11-10)
Christian Heimke authored 13 years ago
|
2192) }
2193)
2194) //entry point for applet
2195) public void init( )
2196) {
2197) javax.swing.SwingUtilities.invokeLater( this );
2198) }
2199)
2200) //entry point for full application
2201) public static void main( String[] args )
2202) {
|
Blimp v.0.3 (2004-11-12)
Christian Heimke authored 13 years ago
|
2203) int i;
2204) BlinkenMovie movie;
2205) Pattern sizePattern, dimPattern;
2206) Matcher sizeMatcher, dimMatcher;
2207) String txtOld, txtNew;
2208)
2209) //running interactively - without arguments
2210) if( args.length <= 0 )
2211) {
2212) javax.swing.SwingUtilities.invokeLater( new Blimp( null ) );
2213) return;
2214) }
2215)
2216) //running interactively - load initial file
2217) if( args.length == 1 && ! args[0].substring( 0, 1 ).equals( "-" ) )
2218) {
2219) javax.swing.SwingUtilities.invokeLater( new Blimp( args[0] ) );
2220) return;
2221) }
2222)
2223) //running as command line tool
2224) System.out.println( "BlinkenLightsInteractiveMovieProgram\n" +
|
Blimp v.1.2.1 (2006-08-01)
Christian Heimke authored 13 years ago
|
2225) "version 1.2.1 date 2006-08-01\n" +
|
Blimp v.0.6 (2005-03-10)
Christian Heimke authored 13 years ago
|
2226) "Copyright (C) 2004-2005: Stefan Schuermans <1stein@schuermans.info>\n" +
|
Blimp v.0.3 (2004-11-12)
Christian Heimke authored 13 years ago
|
2227) "Copyleft: GNU public license - http://www.gnu.org/copyleft/gpl.html\n" +
2228) "a blinkenarea.org project\n" +
2229) "powered by eventphone.de\n" );
2230)
2231) //initialize patterns
2232) sizePattern = Pattern.compile( "^([0-9]+)x([0-9]+)-([0-9]+)/([0-9]+)$" );
2233) dimPattern = Pattern.compile( "^([0-9]+)x([0-9]+)$" );
2234)
2235) //get initial movie
|
Blimp v.0.5 (2004-11-19)
Christian Heimke authored 13 years ago
|
2236) movie = new BlinkenMovie( defHeight, defWidth, defChannels, defMaxval );
|
Blimp v.1.2.1 (2006-08-01)
Christian Heimke authored 13 years ago
|
2237) movie.insertInfo( 0, "creator", "Blimp (version 1.2.1 date 2006-08-01)" );
|
Blimp v.0.5 (2004-11-19)
Christian Heimke authored 13 years ago
|
2238) movie.insertFrame( 0, new BlinkenFrame( defHeight, defWidth, defChannels, defMaxval, defDuration ) );
|
Blimp v.0.3 (2004-11-12)
Christian Heimke authored 13 years ago
|
2239)
2240) //process parameters
2241) for( i = 0; i < args.length; i++ )
2242) {
2243)
2244) if( args[i].equals( "-h" ) || args[i].equals( "--help" ) )
2245) {
2246) System.out.println( "interactive movie editor:\n" +
2247) " java Blimp [<initial-file>]\n" +
2248) "\n" +
2249) "command line tool:\n" +
2250) " java Blimp <parameter> [<parameter> [...]]\n" +
2251) "parameters:\n" +
2252) " -i / --input <file> load movie\n" +
2253) " -r / --resize <width>x<height>-<channels>/<colors> resize movie\n" +
2254) " -s / --scale <width>x<height> scale movie\n" +
2255) " -o / --output <file> save movie\n" +
2256) "\n" );
2257) }
2258)
2259) else if( args[i].equals( "-i" ) || args[i].equals( "--input" ) )
2260) {
2261) if( i + 1 >= args.length )
2262) {
2263) System.out.println( "parameter \"-i\" / \"--input\" requires an argument" );
2264) break;
2265) }
2266) i++;
2267) if( ! movie.load( args[i] ) )
2268) {
2269) System.out.println( "movie \"" + args[i] + "\" could not be loaded..." );
2270) break;
2271) }
2272) System.out.println( "movie \"" + args[i] + "\" was loaded successfully..." );
2273) }
2274)
2275) else if( args[i].equals( "-r" ) || args[i].equals( "--resize" ) )
2276) {
2277) if( i + 1 >= args.length )
2278) {
2279) System.out.println( "parameter \"-r\" / \"--resize\" requires an argument" );
2280) break;
2281) }
2282) i++;
2283) txtOld = movie.getWidth( ) + "x" +
2284) movie.getHeight( ) + "-" +
2285) movie.getChannels( ) + "/" +
2286) (movie.getMaxval( ) + 1);
2287) if( ! (sizeMatcher = sizePattern.matcher( args[i] )).find( ) )
2288) {
2289) System.out.println( "invalid format \"" + args[i] + "\"of size (<width>x<height>-<channles>/<colors>)" );
2290) break;
2291) }
2292) movie.resize( Integer.parseInt( sizeMatcher.group( 2 ) ),
2293) Integer.parseInt( sizeMatcher.group( 1 ) ),
2294) Integer.parseInt( sizeMatcher.group( 3 ) ),
2295) Integer.parseInt( sizeMatcher.group( 4 ) ) - 1 );
2296) txtNew = movie.getWidth( ) + "x" +
2297) movie.getHeight( ) + "-" +
2298) movie.getChannels( ) + "/" +
2299) (movie.getMaxval( ) + 1);
2300) System.out.println( "resized movie from \"" + txtOld + "\" to \"" + txtNew + "\"..." );
2301) }
2302)
2303) else if( args[i].equals( "-s" ) || args[i].equals( "--scale" ) )
2304) {
2305) if( i + 1 >= args.length )
2306) {
2307) System.out.println( "parameter \"-s\" / \"--scale\" requires an argument" );
2308) break;
2309) }
2310) i++;
2311) txtOld = movie.getWidth( ) + "x" +
2312) movie.getHeight( );
2313) if( ! (dimMatcher = dimPattern.matcher( args[i] )).find( ) )
2314) {
2315) System.out.println( "invalid format \"" + args[i] + "\" of dimension (<width>x<height>)" );
2316) break;
2317) }
2318) movie.scale( Integer.parseInt( dimMatcher.group( 2 ) ),
2319) Integer.parseInt( dimMatcher.group( 1 ) ) );
2320) txtNew = movie.getWidth( ) + "x" +
2321) movie.getHeight( );
2322) System.out.println( "scaled movie from \"" + txtOld + "\" to \"" + txtNew + "\"..." );
2323) }
2324)
2325) else if( args[i].equals( "-o" ) || args[i].equals( "--output" ) )
2326) {
2327) if( i + 1 >= args.length )
2328) {
2329) System.out.println( "parameter \"-o\" / \"--output\" requires an argument" );
2330) break;
2331) }
2332) i++;
2333) if( ! movie.save( args[i] ) )
2334) {
2335) System.out.println( "movie \"" + args[i] + "\" could not be saved..." );
2336) break;
2337) }
2338) System.out.println( "movie \"" + args[i] + "\" was saved successfully..." );
2339) }
2340)
2341) else
2342) System.out.println( "unknown parameter \"" + args[i] + "\" - use \"-h\" or \"--help\" to get help" );
2343)
2344) } //for( i...
|