Ignore:
Timestamp:
10/02/19 14:19:48 (5 years ago)
Author:
bln4
Message:

Implementation of ProfileManager. Refactor + additional content for how new profiles are created. The refactoring split out the creation of the default profile from user profiles. Refactoring revealed a long term bug that was causing user profiles to generate with incorrect information. The additional content fixed this bug by introducing the ${USER.NAME} variable, so that the default profile frameset can specify resource locations located in the users resource directory.

org.expeditee.auth.AuthenticatorBrowser
org.expeditee.auth.account.Create
org.expeditee.gui.Browser
org.expeditee.gui.management.ProfileManager
org.expeditee.setting.DirectoryListSetting
org.expeditee.setting.ListSetting
org.expeditee.settings.UserSettings

Implementation of ResourceManager as a core location to get resources from the file system. Also the additional variable ${CURRENT_FRAMESET} to represent the current frameset, so that images can be stored in the directory of the current frameset. This increases portability of framesets.

org.expeditee.gui.FrameIO
org.expeditee.gui.management.ResourceManager
org.expeditee.gui.management.ResourceUtil
Audio:

#NB: Audio used to only operate on a single directory. This has been updated to work in a same way as images. That is: when you ask for a specific resouce, it looks to the user settings to find a sequence of directories to look at in order until it manages to find the desired resource.


There is still need however for a single(ish) source of truth for the .banks and .mastermix file. Therefore these files are now always located in resource-<username>\audio.
org.apollo.agents.MelodySearch
org.apollo.audio.structure.AudioStructureModel
org.apollo.audio.util.MultiTrackPlaybackController
org.apollo.audio.util.SoundDesk
org.apollo.gui.FrameLayoutDaemon
org.apollo.io.AudioPathManager
org.apollo.util.AudioPurger
org.apollo.widgets.FramePlayer
org.apollo.widgets.SampledTrack

Images:

org.expeditee.items.ItemUtils

Frames:

org.expeditee.gui.FrameIO

Fixed a error in the FramePlayer class caused by an incorrect use of toArray().

org.apollo.widgets.FramePlayer


Added several short cut keys to allow for the Play/Pause (Ctrl + P), mute (Ctrl + M) and volume up/down (Ctrl + +/-) when hovering over SampledTrack widgets.

org.apollo.widgets.SampledTrack


Changed the way that Authenticate.login parses the new users profile to be more consistance with other similar places in code.

org.expeditee.auth.account.Authenticate


Encapsulated _body, _surrogateItemsBody and _primaryItemsBody in Frame class. Also changed getBody function to take a boolean flag as to if it should respect the current surrogate mode. If it should then it makes sure that labels have not changed since last time getBody was called.

org.expeditee.gui.Frame

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/apollo/widgets/SampledTrack.java

    r1179 r1434  
    2323import javax.sound.sampled.LineUnavailableException;
    2424import javax.sound.sampled.UnsupportedAudioFileException;
     25import javax.swing.JSlider;
    2526import javax.swing.SwingUtilities;
    2627
     
    7071import org.expeditee.gui.FrameIO;
    7172import org.expeditee.gui.PopupManager;
     73import org.expeditee.gui.management.ResourceManager;
    7274import org.expeditee.items.ItemParentStateChangedEvent;
    7375import org.expeditee.items.ItemUtils;
     
    401403               
    402404                });
    403                
     405                               
    404406                fulltrackView.addKeyListener(new KeyListener() {
    405407
    406408                        @Override
    407                         public void keyPressed(KeyEvent e)
    408                         {
     409                        public void keyPressed(KeyEvent e) {
    409410                        }
    410411
    411412                        @Override
    412                         public void keyReleased(KeyEvent e)
    413                         {
     413                        public void keyReleased(KeyEvent e)     {
     414                               
     415                                // On 26th September, Bryce added P M + - keys to play/pause/resume, mute and adjust volume.
     416                                if (e.isControlDown() && e.getKeyCode() == KeyEvent.VK_P) {
     417                                        try {
     418                                                playbackControlPopup.playPauseResume();
     419                                        } catch (LineUnavailableException e1) {
     420                                                e1.printStackTrace();
     421                                        }
     422                                } else if (e.isControlDown() && e.getKeyCode() == KeyEvent.VK_M) {
     423                                        boolean selected = playbackControlPopup.muteButton.isSelected();
     424                                        playbackControlPopup.muteButton.setSelected(!selected);
     425                                        playbackControlPopup.muteChanged();
     426                                } else if (e.isControlDown() && e.getKeyCode() == KeyEvent.VK_SUBTRACT) {
     427                                        JSlider volumeSlider = playbackControlPopup.volumeSlider;
     428                                        int delta = Math.round(((float) (volumeSlider.getMaximum() - volumeSlider.getMinimum())) / 10f);
     429                                        int newVolume = Math.max(volumeSlider.getValue() - delta, volumeSlider.getMinimum());
     430                                        volumeSlider.setValue(newVolume);
     431                                        playbackControlPopup.volumeChanged();
     432                                } else if (e.isControlDown() && e.getKeyCode() == KeyEvent.VK_ADD) {
     433                                        JSlider volumeSlider = playbackControlPopup.volumeSlider;
     434                                        int delta = Math.round(((float) (volumeSlider.getMaximum() - volumeSlider.getMinimum())) / 10f);
     435                                        int newVolume = Math.min(volumeSlider.getValue() + delta, volumeSlider.getMaximum());
     436                                        volumeSlider.setValue(newVolume);
     437                                        playbackControlPopup.volumeChanged();
     438                                }
     439                               
    414440                                // Toggle pitch-track indexing
    415                                 if (e.isControlDown() && e.getKeyCode() == KeyEvent.VK_I) {
     441                                else if (e.isControlDown() && e.getKeyCode() == KeyEvent.VK_I) {
    416442                                        setShouldOmitIndexAudio(!shouldOmitIndexAudio());
    417443                                        DisplayController.requestRefresh(true);
     
    765791                                setLoadScreenMessage("Loading audio file...");
    766792                               
    767                                 f = new File(
    768                                                 AudioPathManager.AUDIO_HOME_DIRECTORY + localFileName);
     793                                //f = new File(
     794                                //              AudioPathManager.AUDIO_HOME_DIRECTORY + localFileName);
     795                                f = ResourceManager.getAudioResource(localFileName, getParentFrame());
    769796                        }
    770797                       
     
    809836                                        // If recovering - might be recovering an existing track that had been
    810837                                        // saved to the repository .. thus re-use the old file
    811                                         trackModel.setFilepath(AudioPathManager.AUDIO_HOME_DIRECTORY + localFileName);
     838                                        File audioResource = ResourceManager.getAudioResource(localFileName, getParentFrame());
     839                                        trackModel.setFilepath(audioResource.getAbsolutePath());
    812840                                }
    813841                               
     
    940968                // If saving for the file time then get a filename
    941969                if (trackModel.getFilepath() == null) {
    942                         trackModel.setFilepath(AudioPathManager.AUDIO_HOME_DIRECTORY + localFileName);
     970                        File audioResource = ResourceManager.getAudioResource(localFileName, DisplayController.getCurrentFrame());
     971                        trackModel.setFilepath(audioResource.getAbsolutePath());
    943972                        loadFilenameArgument = localFileName; // set to now local, next load will be local
    944973                }
     
    10291058               
    10301059                // Get rid of local file
    1031                 File oldLocalFile = new File(AudioPathManager.AUDIO_HOME_DIRECTORY + localFileName);
     1060                //File oldLocalFile = new File(AudioPathManager.AUDIO_HOME_DIRECTORY + localFileName);
     1061                File oldLocalFile = ResourceManager.getAudioResource(localFileName, getParentFrame());
    10321062                if (oldLocalFile.isFile() && oldLocalFile.exists()) {
    10331063                        try {
     
    11571187                        return recoveryFile.getAbsolutePath();
    11581188                }
    1159                        
    1160                 return AudioPathManager.AUDIO_HOME_DIRECTORY + localFileName;
     1189               
     1190                File audioResource = ResourceManager.getAudioResource(localFileName, getParentFrame());                 
     1191                return audioResource.getAbsolutePath();
    11611192               
    11621193               
     
    20052036                                try {
    20062037       
    2007                                         if (!SoundDesk.getInstance().isPlaying(trackMix.getChannelID())) { // play / resume
    2008                                                
    2009                                                 int startFrame = -1, endFrame = -1;
    2010                                                
    2011                                                 // Resume playback?
    2012                                                 if (SoundDesk.getInstance().isPaused(trackMix.getChannelID())) {
    2013                                                         startFrame = SoundDesk.getInstance().getLastPlayedFramePosition(trackMix.getChannelID());
    2014                                                         if (startFrame >= 0 && startFrame < trackModel.getFrameCount()) {
    2015                                
    2016                                                                 // The user may have edited the audio track and reselected it
    2017                                                                 // since the last pause. Thus select an appropriate end frame
    2018                                                                 endFrame = (trackModel.getSelectionLength() > 1) ?
    2019                                                                                 trackModel.getSelectionStart() + trackModel.getSelectionLength():
    2020                                                                                         trackModel.getFrameCount() - 1;
    2021                                                                        
    2022                                                                 // Changed selection? it play range invalid?
    2023                                                                 if (endFrame <= startFrame || startFrame < trackModel.getSelectionStart()) {
    2024                                                                         startFrame = -1; // Play new selection (see below)
    2025                                                                
    2026                                                                 } else if (endFrame >= trackModel.getFrameCount()) {
    2027                                                                         endFrame = trackModel.getFrameCount() - 1;
    2028                                                                 }               
    2029                                                                
    2030                                                         }
    2031                                                 }
    2032                                                
    2033                                                 // Play from beginning of selection to end of selection
    2034                                                 if (startFrame < 0) {
    2035                                                         startFrame = trackModel.getSelectionStart();
    2036                                                         endFrame = (trackModel.getSelectionLength() > 1) ?
    2037                                                                         startFrame + trackModel.getSelectionLength():
    2038                                                                                 trackModel.getFrameCount() - 1;
    2039                                                 }
    2040        
    2041                                                 // Safety clamp:
    2042                                                 if (endFrame >= trackModel.getFrameCount()) {
    2043                                                         endFrame = trackModel.getFrameCount() - 1;
    2044                                                 }       
    2045                                                
    2046                                                 if (startFrame < endFrame) {
    2047                                                         SoundDesk.getInstance().playSampledTrackModel(
    2048                                                                         trackModel,
    2049                                                                         trackMix.getChannelID(),
    2050                                                                         startFrame,
    2051                                                                         endFrame,
    2052                                                                         0);
    2053                                                 }
    2054        
    2055                                         } else { // pause
    2056                                                
    2057                                                 TrackSequence ts = SoundDesk.getInstance().getTrackSequence(trackMix.getChannelID());
    2058 
    2059                                                 if (ts != null &&
    2060                                                                 ts.isPlaying()) {
    2061                                                        
    2062                                                         // Mark channel as paused.
    2063                                                         SoundDesk.getInstance().setPaused(trackMix.getChannelID(), true);
    2064                                                        
    2065                                                         // Stop playback for this channel
    2066                                                         ApolloPlaybackMixer.getInstance().stop(ts);
    2067                                                        
    2068                                                 }
    2069                                                
    2070                                         }
     2038                                        playPauseResume();
    20712039                                       
    20722040                                } catch (LineUnavailableException e1) {
     
    20942062                        } else if (e.getSource() == miscButton) {
    20952063                                expand(false);
     2064                        }
     2065                }
     2066
     2067                private void playPauseResume() throws LineUnavailableException {
     2068                        if (!SoundDesk.getInstance().isPlaying(trackMix.getChannelID())) { // play / resume
     2069                               
     2070                                int startFrame = -1, endFrame = -1;
     2071                               
     2072                                // Resume playback?
     2073                                if (SoundDesk.getInstance().isPaused(trackMix.getChannelID())) {
     2074                                        startFrame = SoundDesk.getInstance().getLastPlayedFramePosition(trackMix.getChannelID());
     2075                                        if (startFrame >= 0 && startFrame < trackModel.getFrameCount()) {
     2076
     2077                                                // The user may have edited the audio track and reselected it
     2078                                                // since the last pause. Thus select an appropriate end frame
     2079                                                endFrame = (trackModel.getSelectionLength() > 1) ?
     2080                                                                trackModel.getSelectionStart() + trackModel.getSelectionLength():
     2081                                                                        trackModel.getFrameCount() - 1;
     2082                                                       
     2083                                                // Changed selection? it play range invalid?
     2084                                                if (endFrame <= startFrame || startFrame < trackModel.getSelectionStart()) {
     2085                                                        startFrame = -1; // Play new selection (see below)
     2086                                               
     2087                                                } else if (endFrame >= trackModel.getFrameCount()) {
     2088                                                        endFrame = trackModel.getFrameCount() - 1;
     2089                                                }               
     2090                                               
     2091                                        }
     2092                                }
     2093                               
     2094                                // Play from beginning of selection to end of selection
     2095                                if (startFrame < 0) {
     2096                                        startFrame = trackModel.getSelectionStart();
     2097                                        endFrame = (trackModel.getSelectionLength() > 1) ?
     2098                                                        startFrame + trackModel.getSelectionLength():
     2099                                                                trackModel.getFrameCount() - 1;
     2100                                }
     2101
     2102                                // Safety clamp:
     2103                                if (endFrame >= trackModel.getFrameCount()) {
     2104                                        endFrame = trackModel.getFrameCount() - 1;
     2105                                }       
     2106                               
     2107                                if (startFrame < endFrame) {
     2108                                        SoundDesk.getInstance().playSampledTrackModel(
     2109                                                        trackModel,
     2110                                                        trackMix.getChannelID(),
     2111                                                        startFrame,
     2112                                                        endFrame,
     2113                                                        0);
     2114                                }
     2115
     2116                        } else { // pause
     2117                               
     2118                                TrackSequence ts = SoundDesk.getInstance().getTrackSequence(trackMix.getChannelID());
     2119
     2120                                if (ts != null &&
     2121                                                ts.isPlaying()) {
     2122                                       
     2123                                        // Mark channel as paused.
     2124                                        SoundDesk.getInstance().setPaused(trackMix.getChannelID(), true);
     2125                                       
     2126                                        // Stop playback for this channel
     2127                                        ApolloPlaybackMixer.getInstance().stop(ts);
     2128                                       
     2129                                }
     2130                               
    20962131                        }
    20972132                }
Note: See TracChangeset for help on using the changeset viewer.