GemTalk / Sparkle

MIT License
11 stars 5 forks source link

Launcher, the Next Generation #44

Closed martinmcclure closed 3 years ago

martinmcclure commented 3 years ago

Besides "Make it so," here are my thoughts about what the next generation of the launcher should look like.

A "connection profile" stores all of the information needed to make an RSR connection, plus some information used by Sparkle.

A set of connection profiles stored in file (probably STON).

A launcher window can be opened and closed without affecting status of any connections or taskspaces (A taskspace is zero or more explorer windows sharing the same connection).

Within a launcher window...

Connection profiles are displayed in a list.

Selecting a profile in the list opens a details pane in the column to the right. The details pane

Since the profile list is multi-select, more than one details pane can be displayed at once, in usual Sparkle "stacked" fashion.

Supported connection types:

Profile properties common between all types

Properties specific to type

In-memory

Direct insecure connection

GCI connection

Actions on a disconnected profile

Actions on a connected profile

rjsargent commented 3 years ago

I'm going to suggest an alternative launcher model, influenced by how difficult the current GBS launcher is for a certain 5.2.7 customer. They have >> 100 profiles "separated" by unusable profiles with only a "naming" role.

I propose the launcher is named by the profile set it has loaded and each launcher is independent of all others. (Attempting to open a profile set which is already loaded should "surface" the existing launcher.)

On January 12, 2021 12:38:06 PM PST, martinmcclure notifications@github.com wrote:

Besides "Make it so," here are my thoughts about what the next generation of the launcher should look like.

A "connection profile" stores all of the information needed to make an RSR connection, plus some information used by Sparkle.

There can be multiple connection profiles.

A set of connection profiles stored in file (probably STON).

  • The default place to put/find that file might be near where Pharo puts its stuff, which is different in Windows and Linux.
    • File chooser dialog for custom location.

As with the current launcher, a launcher can be opened from the tools menu or, ideally, with a global keyboard shortcut.

A launcher window can be opened and closed without affecting status of any connections or taskspaces (A taskspace is zero or more explorer windows sharing the same connection).

We don't need to allow more than one launcher window to be simultaneously open. However, if we do allow that, all open launchers must be connected to the same model object. For instance, if a new profile is added, or one removed, in one launcher window, any other launcher windows should be automatically updated. Which profiles are selected can be different between multiple launcher windows.

Within a launcher window...

Connection profiles are displayed in a list.

  • The list is sorted by profile name (each profile has a name, see below)
  • The list is multi-select, in usual Sparkle fashion, with showPane/hidePane arrows on the rightmost column of the list.

Connected profiles should be visually distinguished in the list from those not connected. Perhaps the leftmost column of the list has a dark gray circle for disconnected profiles, and a for a connected profile a circle of the profile's color (each profile has a color, see below).

Selecting a profile in the list opens a details pane in the column to the right. The details pane

  • Displays information about the profile
  • Allows editing of that information
  • Allows connecting a disconnected profile
  • Allows various actions (initial list below) on a connected profile

Since the profile list is multi-select, more than one details pane can be displayed at once, in usual Sparkle "stacked" fashion.

Supported connection types: GCI connection must be supported Direct insecure connection is optional -- this is what we have now and might be useful to keep for development and testing. In-memory connection is useful for some testing, but is optional.

Profile properties common between all types

  • Name
    • User can assign any name they like to a profile
    • The profile's name appears in the header bar of each explorer window.
  • Color
    • Chosen using a color-picker (Pharo must have one of those somewhere already?)
    • The profile's color is the background color of each explorer's header bar.

Properties specific to type

In-memory

  • no additional properties

Direct insecure connection

  • Host (name or IP)
  • Port (defaults to 29299)

GCI connection

  • All of the things needed for Jadeite
    • Need to determine what is needed for Kerberos single-sign-on auth on Windows
    • Is it just leave the password empty, or is there more to it?

Actions on a disconnected profile

  • Connect
    • In the future this will restore the taskspace associated with the profile name, opening all the windows that were open when the taskspace was last disconnected. For now, it will open the "default taskspace" which currently consists of a single explorer window with an inspector on nil and a single evaluator.

Actions on a connected profile

  • Disconnect
    • Closes any windows of the taskspace
    • Saves the taskspace (future feature)
    • Disconnects the RSR connection
    • For a GCI connection, log out the GCI
    • Various "open" buttons. Each opens a new explorer window with different initial contents. Types that could be offered include
    • Evaluator (what's in the current default)
    • Process list
    • Code browser

-- You are receiving this because you are subscribed to this thread. Reply to this email directly or view it on GitHub: https://github.com/GemTalk/Sparkle/issues/44

martinmcclure commented 3 years ago

Having multiple launchers, each with a profile set loaded from a different file raises questions of where the files get stored, and how you open the one you want. Would it be sufficient for each profile to belong to zero or more categories, and there's a drop-down menu in the launcher of what category you want to view? That list would also contain "all," which would be the default.

rjsargent commented 3 years ago

"...raises questions of where the files get stored, and how you open the one you want." Well, since you put them where you want and named as you want, it shouldn't be a problem. And in your previous notes, you did explain about default directories for the profile set file out.

Categories might be enough. In addition to All, you probably also need a None especially if there is a mix of categorized and uncategorized.

martinmcclure commented 3 years ago

So for "none" you'd see only the profiles that were in no categories? That makes sense.

rjsargent commented 3 years ago

The launcher demonstrated today looked good.

The Save / Restore file operations should probably be Save and Load, with an additional Merge (so that people can share their profiles e.g. for easier collaboration).

ericwinger commented 3 years ago

I changed the names to Save & Load and will add the Merge feature to a different issue.

ericwinger commented 3 years ago

First cut released in https://github.com/GemTalk/Sparkle/commit/5221ca4d1b51db7224cf6139ed99431dea853ca1 and checked into the development branch.

Closing this issue in favor of future features issue https://github.com/GemTalk/Sparkle/issues/52