Changeset 333


Ignore:
Timestamp:
09/26/08 10:04:49 (16 years ago)
Author:
bjn8
Message:

Improved recording interactions for faster idea capturing.
Various fixes for interactive widgets

Location:
trunk
Files:
1 added
9 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/expeditee/gui/FrameKeyboardActions.java

    r314 r333  
    3434import org.expeditee.items.XRayable;
    3535import org.expeditee.items.widgets.WidgetCorner;
     36import org.expeditee.items.widgets.WidgetEdge;
    3637import org.expeditee.stats.SessionStats;
    3738
     
    15801581                                toSize.addAll(toSet.getLines());
    15811582                        } else if (toSet instanceof Line) {
     1583                               
    15821584                                Line line = (Line) toSet;
    1583                                 float current = Math.abs(line.getThickness());
    1584                                 current = Math.max(current + diff, Item.MINIMUM_THICKNESS);
    1585                                 line.setThickness(current);
    1586                                 FrameGraphics.Repaint();
    1587                                 return;
     1585                               
     1586                                if (!(toSet instanceof WidgetEdge) || ((WidgetEdge)toSet).getWidgetSource().isWidgetEdgeThicknessAdjustable()) {
     1587
     1588                                        float current = Math.abs(line.getThickness());
     1589                                        current = Math.max(current + diff, Item.MINIMUM_THICKNESS);
     1590                                        line.setThickness(current);
     1591                                        FrameGraphics.Repaint();
     1592                                        return;
     1593       
     1594                                }
     1595                               
    15881596                        } else {
    15891597                                toSize.add(toSet);
     
    16031611
    16041612                                if (i.isLineEnd()) {
    1605                                         Collection<Item> allConnected = i.getAllConnected();
    1606                                         done.addAll(allConnected);
    1607                                         for (Item it : allConnected) {
    1608                                                 it.translate(origin, ratio);
    1609                                                 it
    1610                                                                 .setArrowheadLength((float) (it
    1611                                                                                 .getArrowheadLength() * ratio));
     1613                                       
     1614                                        if (!(i instanceof WidgetCorner) || !((WidgetCorner)i).getWidgetSource().isFixedSize()) { // don't size fixed widgets
     1615                                               
     1616                                                Collection<Item> allConnected = i.getAllConnected();
     1617                                                done.addAll(allConnected);
     1618                                                for (Item it : allConnected) {
     1619                                                        it.translate(origin, ratio);
     1620                                                        it
     1621                                                                        .setArrowheadLength((float) (it
     1622                                                                                        .getArrowheadLength() * ratio));
     1623                                                }
     1624                                                i.setThickness((float) (i.getThickness() * ratio));
    16121625                                        }
    1613                                         i.setThickness((float) (i.getThickness() * ratio));
    16141626                                } else if (i instanceof XRayable) {
    16151627                                        XRayable xRay = (XRayable) i;
  • trunk/src/org/expeditee/items/widgets/InteractiveWidget.java

    r320 r333  
    16401640         */
    16411641        public void setWidgetEdgeThickness(float thickness) {
    1642                 for (Item i : _expediteeItems) i.setThickness(thickness);
     1642                _l1.setThickness(thickness, true);
     1643                //for (Item i : _expediteeItems) i.setThickness(thickness);
    16431644//               Above indirectly invokes setSourceThickness accordingly
     1645        }
     1646       
     1647        /**
     1648         * Override to dis-allow widget thickness manipulation from the user.
     1649         * @return
     1650         */
     1651        public boolean isWidgetEdgeThicknessAdjustable() {
     1652                return true;
    16441653        }
    16451654
     
    16581667
    16591668        public void setSourceThickness(float newThickness, boolean setConnected) {
    1660                 _textRepresentation.setThickness(newThickness, setConnected);
     1669                _textRepresentation.setThickness(newThickness, setConnected);
    16611670        }
    16621671
  • trunk/src_apollo/org/apollo/gui/FrameRenderPasses.java

    r320 r333  
    1313import org.apollo.audio.util.Timeline;
    1414import org.apollo.items.FramePlaybackLauncher;
     15import org.apollo.items.RecordOverdubLauncher;
    1516import org.apollo.widgets.LinkedTrack;
    1617import org.apollo.widgets.SampleRecorder;
     
    207208                                                helperLinesToPaint.add(iw.getX());
    208209                                        }
    209                                 } else if (i instanceof FramePlaybackLauncher) {
     210                                } else if (i instanceof FramePlaybackLauncher || i instanceof RecordOverdubLauncher) {
    210211                                        if (helperLinesToPaint == null)
    211212                                                helperLinesToPaint = new LinkedList<Integer>();
  • trunk/src_apollo/org/apollo/items/FramePlaybackLauncher.java

    r315 r333  
    33import java.awt.BasicStroke;
    44import java.awt.Color;
     5import java.awt.GradientPaint;
    56import java.awt.Graphics2D;
     7import java.awt.Paint;
    68import java.awt.Polygon;
    79import java.awt.Stroke;
    810
     11import org.apollo.ApolloSystem;
    912import org.apollo.audio.SampledAudioManager;
    1013import org.apollo.audio.util.FrameLayoutDaemon;
     
    3538        private static Stroke BORDER_STOKE = new BasicStroke(1.0f);
    3639       
     40        private static final Color BASE_COLOR = new Color(60, 148, 255);
     41        private static final Color HIGHLIGHT_COLOR = new Color(253, 255, 201);
     42       
     43       
    3744        public FramePlaybackLauncher() {
    3845                this.setID(getParentOrCurrentFrame().getNextItemID());
     
    5764                if (Browser._theBrowser == null) return;
    5865               
    59                 g.setColor(Color.LIGHT_GRAY);
     66                Paint restore = g.getPaint();
     67               
     68                if (ApolloSystem.useQualityGraphics) {
     69                        GradientPaint gp = new GradientPaint(
     70                                        _x + (WIDTH / 2), _y, HIGHLIGHT_COLOR,
     71                                        _x + (WIDTH / 2), _y + HEIGHT - (HEIGHT / 5), BASE_COLOR);
     72                        g.setPaint(gp);
     73                } else {
     74                        g.setColor(BASE_COLOR);
     75                }
     76               
    6077                g.fillRect((int)_x, (int)_y, WIDTH, HEIGHT);
     78               
     79                g.setPaint(restore);
    6180               
    6281                g.setColor(Color.BLACK);
  • trunk/src_apollo/org/apollo/widgets/FramePlayer.java

    r315 r333  
    193193                updateButtonGUI();
    194194                updateBorderColor();
     195                setWidgetEdgeThickness(TrackWidgetCommons.PLAYING_TRACK_EDGE_THICKNESS); // TODO: Fix this work around
     196                setWidgetEdgeThickness(TrackWidgetCommons.STOPPED_TRACK_EDGE_THICKNESS);
    195197
    196198        }
  • trunk/src_apollo/org/apollo/widgets/LinkedTrack.java

    r319 r333  
    228228                updateBorderColor();
    229229               
     230                setWidgetEdgeThickness(TrackWidgetCommons.PLAYING_TRACK_EDGE_THICKNESS); // TODO: Fix this work around
     231                setWidgetEdgeThickness(TrackWidgetCommons.STOPPED_TRACK_EDGE_THICKNESS);
     232               
    230233               
    231234        }
     
    18711874        }
    18721875       
     1876        @Override
     1877        public boolean isWidgetEdgeThicknessAdjustable() {
     1878                return false;
     1879        }
     1880       
     1881       
    18731882
    18741883}
  • trunk/src_apollo/org/apollo/widgets/MetronomePlayer.java

    r332 r333  
    119119                _swingComponent.add(enabledCheckbox);
    120120               
     121                setWidgetEdgeThickness(TrackWidgetCommons.PLAYING_TRACK_EDGE_THICKNESS); // TODO: Fix this work around
     122                setWidgetEdgeThickness(TrackWidgetCommons.STOPPED_TRACK_EDGE_THICKNESS);
     123               
    121124        }
    122125       
  • trunk/src_apollo/org/apollo/widgets/SampleRecorder.java

    r332 r333  
    4242import org.apollo.gui.WaveFormRenderer;
    4343import org.apollo.io.IconRepository;
     44import org.apollo.items.RecordOverdubLauncher;
    4445import org.apollo.mvc.Observer;
    4546import org.apollo.mvc.Subject;
     
    9495        private boolean hasExplicityStopped = false;
    9596       
    96         private boolean isSelfDestructable = false;
     97        private boolean isTemporary = false;
    9798       
    9899        private final static int BUTTON_HEIGHT = 50;
     
    109110        private final static int RENDER_POINTS_PER_SECOND = 20; // how many points to render each second
    110111       
    111         private final static String SELF_DESTRUCT_OFF_META = "permanent";
    112112        private final static String COUNTDOWN_META = "countdown=";
    113113       
    114        
    115114        public SampleRecorder(Text source, String[] args) {
     115                this(source, args, false);
     116        }
     117       
     118        public SampleRecorder(Text source, String[] args, boolean isTemporary) {
    116119                super(source, new JPanel(new GridBagLayout()),
    117120                                AnimatedSampleGraph.GRAPH_WIDTH + (2 * HORO_SPACING),
     
    120123                                COUNTDOWN_SETTINGS_HEIGHT + BUTTON_HEIGHT + LABEL_HEIGHT + AnimatedSampleGraph.GRAPH_HEIGHT + (4 * VERT_SPACING));
    121124               
    122                 isSelfDestructable = !containsDataTrimmedIgnoreCase(SELF_DESTRUCT_OFF_META);
     125                this.isTemporary = isTemporary;
     126               
    123127                int countdown = getStrippedDataInt(COUNTDOWN_META, 0);
    124128                if (countdown < 0) countdown = 0;
     
    200204                buttonPane.add(stopButton, c);
    201205
    202                
    203206                // Assemble
    204207               
     
    230233
    231234                setState(WidgetState.Ready, "Ready");
     235        }
     236       
     237        /**
     238         * Starts recording with playback... counts down if one is set
     239         *
     240         */
     241        public void commenceOverdubRecording() {
     242                shouldPlayback = true;
     243                setState(WidgetState.CountingDown, "Counting down...");
     244        }
     245       
     246        /**
     247         *
     248         * @param countdown
     249         *              The countdown in seconds
     250         *
     251         * @throws IllegalArgumentException
     252         *                      if countdown isn't allowed (due to restraints, i.e. can't be negative)
     253         */
     254        public void setCountdown(int countdown) {
     255                this.countDownSpinner.setValue(countdown);
    232256        }
    233257       
     
    250274                if (newState == WidgetState.Ready) {
    251275
     276                        // Self destructable recorders are only temporary.. is returned back to a ready state then
     277                        // get rid of them completely
     278                        if (oldState != null && isTemporary) {
     279                                removeSelf();
     280                        }
     281                       
    252282                        recordButton.setVisible(true);
    253283                        recordSynchedButton.setVisible(true);
     
    330360                        } else {
    331361                               
    332                                 if (isSelfDestructable) {
     362                                if (isTemporary) {
    333363                                        // Remove this temporary widget
    334364                                        removeSelf();
     
    360390                                                         null);
    361391                                         
    362                                          if (isSelfDestructable) {
     392                                         if (isTemporary) {
    363393                                                 
    364394                                                 targetFrame.addAllItems(trackWidget.getItems());
     
    420450                List<String> data = new LinkedList<String>();
    421451               
    422                 if (isSelfDestructable)
    423                         data.add(SELF_DESTRUCT_OFF_META);
    424                
    425452                data.add(COUNTDOWN_META + countDownSpinner.getValue());
    426453
     
    566593                        }
    567594                       
    568                 } else if (e.getSource() == recordButton || e.getSource() == recordSynchedButton) {
     595                } else if (e.getSource() == recordButton) {
    569596                        assert (state == WidgetState.Ready);
    570                         shouldPlayback = (e.getSource() == recordSynchedButton);
     597                        shouldPlayback = false;
    571598                        setState(WidgetState.CountingDown, "Counting down...");
     599                } else if (e.getSource() == recordSynchedButton) {
     600                        assert (state == WidgetState.Ready);
     601                       
     602                        Frame target = DisplayIO.getCurrentFrame();
     603                        if (target  == null) return;
     604
     605                        // Create the launcher
     606                       
     607                        RecordOverdubLauncher launcher = new RecordOverdubLauncher((Integer)countDownSpinner.getValue());
     608                        launcher.setPosition(FrameMouseActions.MouseX, FrameMouseActions.MouseY);
     609
     610                        // Pick it up
     611                        FrameMouseActions.pickup(launcher);
     612                       
    572613                }
    573614
     
    9621003        }
    9631004       
     1005        @Override
     1006        public boolean isWidgetEdgeThicknessAdjustable() {
     1007                return false;
     1008        }
     1009       
    9641010}
  • trunk/src_apollo/org/apollo/widgets/SampledTrack.java

    r331 r333  
    444444                // Make sure border color is correct
    445445                updateBorderColor();
     446                setWidgetEdgeThickness(TrackWidgetCommons.PLAYING_TRACK_EDGE_THICKNESS); // TODO: Fix this work around
    446447                setWidgetEdgeThickness(TrackWidgetCommons.STOPPED_TRACK_EDGE_THICKNESS);
    447448
     
    18701871                                        );
    18711872                }
    1872 
    1873         }
     1873               
     1874        }
     1875
     1876        @Override
     1877        public boolean isWidgetEdgeThicknessAdjustable() {
     1878                return false;
     1879        }
     1880       
     1881       
    18741882       
    18751883}
Note: See TracChangeset for help on using the changeset viewer.