Coder Social home page Coder Social logo

beats's Issues

Editing on a jtable (a playlistTable) seems confusing when the cell isn't selected

It's possible to edit a cell without it being selected (JTable standard behaviour).
This is a little confusing for users, as the difference between user typed characters and auto-complete generated characters aren't shown. This also results in the character selection (containing said auto-complete characters) not being differently coloured.

This makes the CellEditors behaviour seem a bit off, although it is perfectly logical.
The UI just doesn't make it clear enough.

A look into trying to force the table selection might be in order.

Streamline archival screen

  • Create Section
  • Auto-suggest default values based on current Date & last episodeId (based on todays date, last episodeId)
  • Integrate creation of a new episode into archival screen (create episode dialog becomes obsolete)
  • Integrate creation of section codes into the archival screen

Catalog

A 'Catalog' that displays:

  • Most populair songs
  • Most populair artists

Archive Toolbar

  • Search box => uses RowSorter.setRowFilter to display results

Application Manager

  • Call recovery manager
  • Check the arguments for a loadable db
  • Create & load the db
  • Create the GUI
  • Control access to globally required objects

Cut, Copy & Paste system

  • Copy from archive
  • Cut from playlist
  • Copy from playlist
  • Paste to playlist
  • Java Clipboard class
  • Visible Clipboard (South component ?)

InfoView

  • Detect if artist & song are the database
  • Display last time the song was played (ID + date)
  • Display last time the artist was played (ID + date + song)
  • Display if band is local
  • Display the count(title) & count(artistName)

Dropdown suggestions playlists

  • Create an editor based upon the existing AutoCompletingEditor that extends it by adding a dropdown menu.
  • Populate this menu based upon IMatcher data
  • Decide if forwardOnly is necessary and whether or not full Substring analysis should be used instead of matching only by the start of the string

Race Condition: SQLConnection.commit & DataChangedListeners

Steps to reproduce:

  • Import a .wwdb file
  • Before the import is completed, click a ui object (another tab on the centerTabbedPane e.g.)
  • ConcurrentModificationException is thrown
    This happens, but not consistently. The logical suspect is a race condition

PlaylistJMenu

  • Rename playlist
  • Change playlist order
  • Add Playlist
  • Delete Playlist

Single Instance Manager

The DB provides lock-file implementation on it's own. So a single instance is practically guaranteed.
But, the second instance should be able to message the first one to open up a new file.

Printing of playlists

  • Built in print of JTable
  • Built in print functionality of java
    Combine into a simple playlist printing functionality

Exception Manager/Logger

A system that

  • logs errors
  • stops application execution if necessary
  • possibly recovers/restarts it
  • notifies the user if necessary
  • translates ConnectionException to human readable text and dialogs

Recovery:

  • Detect remaining file after forced shutdown
  • Validate & Recover said file
  • Notify user of recovery

(native) File association

  • Associate .BEATs format on windows with application
  • Associate .BEATs format on linux with .jar runnable
  • Handle a mulitple application instance scenario by opening the newly loaded file in the existing appwindow instead

Tools & fixes

Handy tools & on-the-spot fixes

  • Refresh Screen (full GUI)
  • rename all occurences of an artist
  • rename all occurences of a song
  • change date belonging to an episode
  • check for episodeId continuity

Rework CCP/Drag-and-Drop to use a better suited model instead of PlaylistEntries

Set on autosort for Archive & remove unsorted

An unsorted Archive results an a quasi-sorted table.
Users assume that it's sorted, with confusion as a possible consequence.

  • Remove unsorted functionality for archive table
  • Set the default sortkeys for the archive to {Artist, Episode}

(or combine both and make the table reset to the default sortkeys on left top corner press instead of no sort)

Direct SQL Editing Console

Include an advanced tool (with the necessary warning dialogs!)

  • Add a warning that asks that the user save first before starting manual edits in the console
  • A JLabel (or other JTextComponent) that explains the use of the console, contains warnings, recommends the use of the Commit Button, links to sqlite.org and contains the names of handy tables/commands such as SQLITE_MASTER, etc..
  • (Possibly) include a jdialog that shows all the CREATE TABLE statements used in SQLConnection (put it in a create.sql file and show that?)
  • A textfield where SQL Syntax can be inputted
  • A JButton that tries to execute said SQL code.
  • A JTextArea (within a scrollpane) containing possible output (or error traces)
  • A JButton that calls the SQLConnection.Commit() function with parameter DataChangedListener.DataType.ALL_OPTS
  • A JDialog warning that opens when the console is close warning that commits MUST happen before closing the console (except on selects, etc). Include the option to cancel the closing of the dialog.

CurrentQueue

  • CurrentQueue Panel
    Toolbar/Popupmenu with:
  • Move back to Playlist
  • Archive Queue

Import/Export To an XML format in WWDB2 format conversion style.

  • Create an XMLFileFilter
  • Add a private importXMLFile(..) method to importFileAction
  • Combine XMLFileFilter & importXMLFile into the actionPerfomed method
  • Create a exportFileAction
  • Link exportFileAction with export menubutton
  • Add a private exportXMLFile(...) method to exportFileAction
  • Combine XMLFileFilter & exportXMLFille into the actionPerfomed method

Autosuggest

  • create autosuggest GUI element
  • add playlist.artist suggest functionality
  • add playlist.song suggest functionality

Playlist table enhancements

  • Empty row for inserting new content
  • Table sorting (according to all column headers + no sort)
  • Row index
  • Pick and choose the shown columns

VACUUM on load

Because saving might be done multiple times (and vacuum could change rowid's),
it's best to vacuum a table right before actual use. As the file format doens't use that much space meaning that not a lot of space will be freed anyway, VACUUM before save isn't necessary.

On the other hand, VACUUM before use seems logical. As it restructures fragmented databases so speed is optimized. As the application doesn't execute a lot of DB operations (relatively, at max a couple (tens of) thousands for a session where an import is performed and much less for normal operation) it isn't necessary to do VACUUM more than once per session.

Playlist end edit jumps selection

Ending a cellEdit (by way of enter or tab) causes unwanted change of selected item

Probably because of the playlist data being reloaded after change?
Both the row AND cell selected should stay the same (so a tab still goes to the next cell)

Archiving Screen

  • Custom Dialog framework
  • Summery View
  • Select Episode
  • Create Episode
  • Select Section

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.