From af6a1fb62c1c54861d87d563a9b54c837192ef64 Mon Sep 17 00:00:00 2001 From: Denis Kudriashov Date: Tue, 12 Sep 2017 17:18:00 +0200 Subject: [PATCH] Very simple support for focus navigation with arrow left/right. It makes behaviour like in Nautilus --- .../instance/isNavigationPanelFocused.st | 4 ++++ .../instance/switchFocusToNextPane.st | 7 +++++++ .../instance/switchFocusToPreviousPane.st | 7 +++++++ .../instance/hasKeyboardFocus.st | 3 +++ .../instance/takeKeyboardFocus.st | 3 +++ .../README.md | 0 .../instance/browser..st | 3 +++ .../instance/browser.st | 3 +++ .../instance/canBeExecutedInContext..st | 3 +++ .../instance/execute.st | 3 +++ .../instance/readParametersFromContext..st | 4 ++++ .../properties.json | 13 +++++++++++++ .../README.md | 0 .../instance/browser..st | 3 +++ .../instance/browser.st | 3 +++ .../instance/canBeExecutedInContext..st | 3 +++ .../instance/execute.st | 3 +++ .../instance/readParametersFromContext..st | 4 ++++ .../properties.json | 13 +++++++++++++ .../class/systemBrowserShortcutActivator.st | 5 +++++ .../properties.json | 3 +++ .../class/systemBrowserShortcutActivator.st | 5 +++++ .../properties.json | 3 +++ 23 files changed, 98 insertions(+) create mode 100644 Calypso-Tools-CoreBrowser.package/ClyBrowser.class/instance/isNavigationPanelFocused.st create mode 100644 Calypso-Tools-CoreBrowser.package/ClyBrowser.class/instance/switchFocusToNextPane.st create mode 100644 Calypso-Tools-CoreBrowser.package/ClyBrowser.class/instance/switchFocusToPreviousPane.st create mode 100644 Calypso-Tools-CoreBrowser.package/ClyNavigationView.class/instance/hasKeyboardFocus.st create mode 100644 Calypso-Tools-CoreBrowser.package/ClyNavigationView.class/instance/takeKeyboardFocus.st create mode 100644 Calypso-Tools-CoreBrowser.package/ClySwitchFocusToNextBrowserPaneCommand.class/README.md create mode 100644 Calypso-Tools-CoreBrowser.package/ClySwitchFocusToNextBrowserPaneCommand.class/instance/browser..st create mode 100644 Calypso-Tools-CoreBrowser.package/ClySwitchFocusToNextBrowserPaneCommand.class/instance/browser.st create mode 100644 Calypso-Tools-CoreBrowser.package/ClySwitchFocusToNextBrowserPaneCommand.class/instance/canBeExecutedInContext..st create mode 100644 Calypso-Tools-CoreBrowser.package/ClySwitchFocusToNextBrowserPaneCommand.class/instance/execute.st create mode 100644 Calypso-Tools-CoreBrowser.package/ClySwitchFocusToNextBrowserPaneCommand.class/instance/readParametersFromContext..st create mode 100644 Calypso-Tools-CoreBrowser.package/ClySwitchFocusToNextBrowserPaneCommand.class/properties.json create mode 100644 Calypso-Tools-CoreBrowser.package/ClySwitchFocusToPreviousBrowserPaneCommand.class/README.md create mode 100644 Calypso-Tools-CoreBrowser.package/ClySwitchFocusToPreviousBrowserPaneCommand.class/instance/browser..st create mode 100644 Calypso-Tools-CoreBrowser.package/ClySwitchFocusToPreviousBrowserPaneCommand.class/instance/browser.st create mode 100644 Calypso-Tools-CoreBrowser.package/ClySwitchFocusToPreviousBrowserPaneCommand.class/instance/canBeExecutedInContext..st create mode 100644 Calypso-Tools-CoreBrowser.package/ClySwitchFocusToPreviousBrowserPaneCommand.class/instance/execute.st create mode 100644 Calypso-Tools-CoreBrowser.package/ClySwitchFocusToPreviousBrowserPaneCommand.class/instance/readParametersFromContext..st create mode 100644 Calypso-Tools-CoreBrowser.package/ClySwitchFocusToPreviousBrowserPaneCommand.class/properties.json create mode 100644 Calypso-Tools-SystemBrowser.package/ClySwitchFocusToNextBrowserPaneCommand.extension/class/systemBrowserShortcutActivator.st create mode 100644 Calypso-Tools-SystemBrowser.package/ClySwitchFocusToNextBrowserPaneCommand.extension/properties.json create mode 100644 Calypso-Tools-SystemBrowser.package/ClySwitchFocusToPreviousBrowserPaneCommand.extension/class/systemBrowserShortcutActivator.st create mode 100644 Calypso-Tools-SystemBrowser.package/ClySwitchFocusToPreviousBrowserPaneCommand.extension/properties.json diff --git a/Calypso-Tools-CoreBrowser.package/ClyBrowser.class/instance/isNavigationPanelFocused.st b/Calypso-Tools-CoreBrowser.package/ClyBrowser.class/instance/isNavigationPanelFocused.st new file mode 100644 index 00000000..927ec591 --- /dev/null +++ b/Calypso-Tools-CoreBrowser.package/ClyBrowser.class/instance/isNavigationPanelFocused.st @@ -0,0 +1,4 @@ +testing +isNavigationPanelFocused + + ^navigationViews anySatisfy: [ :each | each hasKeyboardFocus ] \ No newline at end of file diff --git a/Calypso-Tools-CoreBrowser.package/ClyBrowser.class/instance/switchFocusToNextPane.st b/Calypso-Tools-CoreBrowser.package/ClyBrowser.class/instance/switchFocusToNextPane.st new file mode 100644 index 00000000..4dece5ef --- /dev/null +++ b/Calypso-Tools-CoreBrowser.package/ClyBrowser.class/instance/switchFocusToNextPane.st @@ -0,0 +1,7 @@ +navigation +switchFocusToNextPane + + | focused next | + focused := navigationViews detect: [ :each | each hasKeyboardFocus ] ifNone: [ ^self ]. + next := navigationViews after: focused ifAbsent: [ ^self focusActiveTab ]. + next takeKeyboardFocus \ No newline at end of file diff --git a/Calypso-Tools-CoreBrowser.package/ClyBrowser.class/instance/switchFocusToPreviousPane.st b/Calypso-Tools-CoreBrowser.package/ClyBrowser.class/instance/switchFocusToPreviousPane.st new file mode 100644 index 00000000..bd0413c1 --- /dev/null +++ b/Calypso-Tools-CoreBrowser.package/ClyBrowser.class/instance/switchFocusToPreviousPane.st @@ -0,0 +1,7 @@ +navigation +switchFocusToPreviousPane + + | focused next | + focused := navigationViews detect: [ :each | each hasKeyboardFocus ] ifNone: [ ^self ]. + next := navigationViews before: focused ifAbsent: [ ^self ]. + next takeKeyboardFocus \ No newline at end of file diff --git a/Calypso-Tools-CoreBrowser.package/ClyNavigationView.class/instance/hasKeyboardFocus.st b/Calypso-Tools-CoreBrowser.package/ClyNavigationView.class/instance/hasKeyboardFocus.st new file mode 100644 index 00000000..928c01a8 --- /dev/null +++ b/Calypso-Tools-CoreBrowser.package/ClyNavigationView.class/instance/hasKeyboardFocus.st @@ -0,0 +1,3 @@ +testing +hasKeyboardFocus + ^super hasKeyboardFocus or: [ table hasKeyboardFocus ] \ No newline at end of file diff --git a/Calypso-Tools-CoreBrowser.package/ClyNavigationView.class/instance/takeKeyboardFocus.st b/Calypso-Tools-CoreBrowser.package/ClyNavigationView.class/instance/takeKeyboardFocus.st new file mode 100644 index 00000000..3afe8be8 --- /dev/null +++ b/Calypso-Tools-CoreBrowser.package/ClyNavigationView.class/instance/takeKeyboardFocus.st @@ -0,0 +1,3 @@ +controlling +takeKeyboardFocus + table takeKeyboardFocus \ No newline at end of file diff --git a/Calypso-Tools-CoreBrowser.package/ClySwitchFocusToNextBrowserPaneCommand.class/README.md b/Calypso-Tools-CoreBrowser.package/ClySwitchFocusToNextBrowserPaneCommand.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/Calypso-Tools-CoreBrowser.package/ClySwitchFocusToNextBrowserPaneCommand.class/instance/browser..st b/Calypso-Tools-CoreBrowser.package/ClySwitchFocusToNextBrowserPaneCommand.class/instance/browser..st new file mode 100644 index 00000000..5bf0e751 --- /dev/null +++ b/Calypso-Tools-CoreBrowser.package/ClySwitchFocusToNextBrowserPaneCommand.class/instance/browser..st @@ -0,0 +1,3 @@ +accessing +browser: anObject + browser := anObject \ No newline at end of file diff --git a/Calypso-Tools-CoreBrowser.package/ClySwitchFocusToNextBrowserPaneCommand.class/instance/browser.st b/Calypso-Tools-CoreBrowser.package/ClySwitchFocusToNextBrowserPaneCommand.class/instance/browser.st new file mode 100644 index 00000000..f7bda422 --- /dev/null +++ b/Calypso-Tools-CoreBrowser.package/ClySwitchFocusToNextBrowserPaneCommand.class/instance/browser.st @@ -0,0 +1,3 @@ +accessing +browser + ^ browser \ No newline at end of file diff --git a/Calypso-Tools-CoreBrowser.package/ClySwitchFocusToNextBrowserPaneCommand.class/instance/canBeExecutedInContext..st b/Calypso-Tools-CoreBrowser.package/ClySwitchFocusToNextBrowserPaneCommand.class/instance/canBeExecutedInContext..st new file mode 100644 index 00000000..8212173c --- /dev/null +++ b/Calypso-Tools-CoreBrowser.package/ClySwitchFocusToNextBrowserPaneCommand.class/instance/canBeExecutedInContext..st @@ -0,0 +1,3 @@ +testing +canBeExecutedInContext: aBrowserContext + ^aBrowserContext browser isNavigationPanelFocused \ No newline at end of file diff --git a/Calypso-Tools-CoreBrowser.package/ClySwitchFocusToNextBrowserPaneCommand.class/instance/execute.st b/Calypso-Tools-CoreBrowser.package/ClySwitchFocusToNextBrowserPaneCommand.class/instance/execute.st new file mode 100644 index 00000000..5374abb4 --- /dev/null +++ b/Calypso-Tools-CoreBrowser.package/ClySwitchFocusToNextBrowserPaneCommand.class/instance/execute.st @@ -0,0 +1,3 @@ +execution +execute + browser switchFocusToNextPane \ No newline at end of file diff --git a/Calypso-Tools-CoreBrowser.package/ClySwitchFocusToNextBrowserPaneCommand.class/instance/readParametersFromContext..st b/Calypso-Tools-CoreBrowser.package/ClySwitchFocusToNextBrowserPaneCommand.class/instance/readParametersFromContext..st new file mode 100644 index 00000000..5c840e53 --- /dev/null +++ b/Calypso-Tools-CoreBrowser.package/ClySwitchFocusToNextBrowserPaneCommand.class/instance/readParametersFromContext..st @@ -0,0 +1,4 @@ +execution +readParametersFromContext: aToolContext + super readParametersFromContext: aToolContext. + browser := aToolContext browser \ No newline at end of file diff --git a/Calypso-Tools-CoreBrowser.package/ClySwitchFocusToNextBrowserPaneCommand.class/properties.json b/Calypso-Tools-CoreBrowser.package/ClySwitchFocusToNextBrowserPaneCommand.class/properties.json new file mode 100644 index 00000000..0a69fc43 --- /dev/null +++ b/Calypso-Tools-CoreBrowser.package/ClySwitchFocusToNextBrowserPaneCommand.class/properties.json @@ -0,0 +1,13 @@ +{ + "commentStamp" : "", + "super" : "CmdCommand", + "category" : "Calypso-Tools-CoreBrowser-Commands-BrowserControlling", + "classinstvars" : [ ], + "pools" : [ ], + "classvars" : [ ], + "instvars" : [ + "browser" + ], + "name" : "ClySwitchFocusToNextBrowserPaneCommand", + "type" : "normal" +} \ No newline at end of file diff --git a/Calypso-Tools-CoreBrowser.package/ClySwitchFocusToPreviousBrowserPaneCommand.class/README.md b/Calypso-Tools-CoreBrowser.package/ClySwitchFocusToPreviousBrowserPaneCommand.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/Calypso-Tools-CoreBrowser.package/ClySwitchFocusToPreviousBrowserPaneCommand.class/instance/browser..st b/Calypso-Tools-CoreBrowser.package/ClySwitchFocusToPreviousBrowserPaneCommand.class/instance/browser..st new file mode 100644 index 00000000..5bf0e751 --- /dev/null +++ b/Calypso-Tools-CoreBrowser.package/ClySwitchFocusToPreviousBrowserPaneCommand.class/instance/browser..st @@ -0,0 +1,3 @@ +accessing +browser: anObject + browser := anObject \ No newline at end of file diff --git a/Calypso-Tools-CoreBrowser.package/ClySwitchFocusToPreviousBrowserPaneCommand.class/instance/browser.st b/Calypso-Tools-CoreBrowser.package/ClySwitchFocusToPreviousBrowserPaneCommand.class/instance/browser.st new file mode 100644 index 00000000..f7bda422 --- /dev/null +++ b/Calypso-Tools-CoreBrowser.package/ClySwitchFocusToPreviousBrowserPaneCommand.class/instance/browser.st @@ -0,0 +1,3 @@ +accessing +browser + ^ browser \ No newline at end of file diff --git a/Calypso-Tools-CoreBrowser.package/ClySwitchFocusToPreviousBrowserPaneCommand.class/instance/canBeExecutedInContext..st b/Calypso-Tools-CoreBrowser.package/ClySwitchFocusToPreviousBrowserPaneCommand.class/instance/canBeExecutedInContext..st new file mode 100644 index 00000000..8212173c --- /dev/null +++ b/Calypso-Tools-CoreBrowser.package/ClySwitchFocusToPreviousBrowserPaneCommand.class/instance/canBeExecutedInContext..st @@ -0,0 +1,3 @@ +testing +canBeExecutedInContext: aBrowserContext + ^aBrowserContext browser isNavigationPanelFocused \ No newline at end of file diff --git a/Calypso-Tools-CoreBrowser.package/ClySwitchFocusToPreviousBrowserPaneCommand.class/instance/execute.st b/Calypso-Tools-CoreBrowser.package/ClySwitchFocusToPreviousBrowserPaneCommand.class/instance/execute.st new file mode 100644 index 00000000..c16c9312 --- /dev/null +++ b/Calypso-Tools-CoreBrowser.package/ClySwitchFocusToPreviousBrowserPaneCommand.class/instance/execute.st @@ -0,0 +1,3 @@ +execution +execute + browser switchFocusToPreviousPane \ No newline at end of file diff --git a/Calypso-Tools-CoreBrowser.package/ClySwitchFocusToPreviousBrowserPaneCommand.class/instance/readParametersFromContext..st b/Calypso-Tools-CoreBrowser.package/ClySwitchFocusToPreviousBrowserPaneCommand.class/instance/readParametersFromContext..st new file mode 100644 index 00000000..5c840e53 --- /dev/null +++ b/Calypso-Tools-CoreBrowser.package/ClySwitchFocusToPreviousBrowserPaneCommand.class/instance/readParametersFromContext..st @@ -0,0 +1,4 @@ +execution +readParametersFromContext: aToolContext + super readParametersFromContext: aToolContext. + browser := aToolContext browser \ No newline at end of file diff --git a/Calypso-Tools-CoreBrowser.package/ClySwitchFocusToPreviousBrowserPaneCommand.class/properties.json b/Calypso-Tools-CoreBrowser.package/ClySwitchFocusToPreviousBrowserPaneCommand.class/properties.json new file mode 100644 index 00000000..d09f367d --- /dev/null +++ b/Calypso-Tools-CoreBrowser.package/ClySwitchFocusToPreviousBrowserPaneCommand.class/properties.json @@ -0,0 +1,13 @@ +{ + "commentStamp" : "", + "super" : "CmdCommand", + "category" : "Calypso-Tools-CoreBrowser-Commands-BrowserControlling", + "classinstvars" : [ ], + "pools" : [ ], + "classvars" : [ ], + "instvars" : [ + "browser" + ], + "name" : "ClySwitchFocusToPreviousBrowserPaneCommand", + "type" : "normal" +} \ No newline at end of file diff --git a/Calypso-Tools-SystemBrowser.package/ClySwitchFocusToNextBrowserPaneCommand.extension/class/systemBrowserShortcutActivator.st b/Calypso-Tools-SystemBrowser.package/ClySwitchFocusToNextBrowserPaneCommand.extension/class/systemBrowserShortcutActivator.st new file mode 100644 index 00000000..47a0d00a --- /dev/null +++ b/Calypso-Tools-SystemBrowser.package/ClySwitchFocusToNextBrowserPaneCommand.extension/class/systemBrowserShortcutActivator.st @@ -0,0 +1,5 @@ +*Calypso-Tools-SystemBrowser +systemBrowserShortcutActivator + + + ^CmdShortcutCommandActivator by: Character arrowRight asShortcut for: ClySystemBrowserContext \ No newline at end of file diff --git a/Calypso-Tools-SystemBrowser.package/ClySwitchFocusToNextBrowserPaneCommand.extension/properties.json b/Calypso-Tools-SystemBrowser.package/ClySwitchFocusToNextBrowserPaneCommand.extension/properties.json new file mode 100644 index 00000000..fd7c4163 --- /dev/null +++ b/Calypso-Tools-SystemBrowser.package/ClySwitchFocusToNextBrowserPaneCommand.extension/properties.json @@ -0,0 +1,3 @@ +{ + "name" : "ClySwitchFocusToNextBrowserPaneCommand" +} \ No newline at end of file diff --git a/Calypso-Tools-SystemBrowser.package/ClySwitchFocusToPreviousBrowserPaneCommand.extension/class/systemBrowserShortcutActivator.st b/Calypso-Tools-SystemBrowser.package/ClySwitchFocusToPreviousBrowserPaneCommand.extension/class/systemBrowserShortcutActivator.st new file mode 100644 index 00000000..c0ca90ea --- /dev/null +++ b/Calypso-Tools-SystemBrowser.package/ClySwitchFocusToPreviousBrowserPaneCommand.extension/class/systemBrowserShortcutActivator.st @@ -0,0 +1,5 @@ +*Calypso-Tools-SystemBrowser +systemBrowserShortcutActivator + + + ^CmdShortcutCommandActivator by: Character arrowLeft asShortcut for: ClySystemBrowserContext \ No newline at end of file diff --git a/Calypso-Tools-SystemBrowser.package/ClySwitchFocusToPreviousBrowserPaneCommand.extension/properties.json b/Calypso-Tools-SystemBrowser.package/ClySwitchFocusToPreviousBrowserPaneCommand.extension/properties.json new file mode 100644 index 00000000..55a721d9 --- /dev/null +++ b/Calypso-Tools-SystemBrowser.package/ClySwitchFocusToPreviousBrowserPaneCommand.extension/properties.json @@ -0,0 +1,3 @@ +{ + "name" : "ClySwitchFocusToPreviousBrowserPaneCommand" +} \ No newline at end of file