Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
import './groupingMenuButton.css';

// React.
import React from 'react';
import React, { useState, useEffect } from 'react';

// Other dependencies.
import { localize } from '../../../../../nls.js';
Expand All @@ -16,6 +16,7 @@ import { ActionBarMenuButton } from '../../../../../platform/positronActionBar/b
import { usePositronVariablesContext } from '../positronVariablesContext.js';
import { PositronVariablesGrouping } from '../../../../services/positronVariables/common/interfaces/positronVariablesInstance.js';
import { ThemeIcon } from '../../../../../base/common/themables.js';
import { DisposableStore } from '../../../../../base/common/lifecycle.js';

/**
* Localized strings.
Expand All @@ -30,16 +31,35 @@ export const GroupingMenuButton = () => {
// Context hooks.
const positronVariablesContext = usePositronVariablesContext();

// State for current grouping
const [currentGrouping, setCurrentGrouping] = useState<PositronVariablesGrouping | undefined>();

// Subscribe to changes in entries (which happen when grouping changes)
useEffect(() => {
const disposableStore = new DisposableStore();

if (positronVariablesContext.activePositronVariablesInstance) {
// Subscribe to entries changes
disposableStore.add(
positronVariablesContext.activePositronVariablesInstance.onDidChangeEntries(() => {
setCurrentGrouping(positronVariablesContext.activePositronVariablesInstance?.grouping);
})
);

// Set initial value
setCurrentGrouping(positronVariablesContext.activePositronVariablesInstance.grouping);
}

return () => disposableStore.dispose();
}, [positronVariablesContext.activePositronVariablesInstance]);

// Builds the actions.
const actions = () => {
// This can't happen.
if (positronVariablesContext.activePositronVariablesInstance === undefined) {
return [];
}

// Get the current grouping.
const grouping = positronVariablesContext.activePositronVariablesInstance.grouping;

// Build the actions.
const actions: IAction[] = [];

Expand All @@ -50,7 +70,7 @@ export const GroupingMenuButton = () => {
tooltip: '',
class: undefined,
enabled: true,
checked: grouping === PositronVariablesGrouping.None,
checked: currentGrouping === PositronVariablesGrouping.None,
run: () => {
if (!positronVariablesContext.activePositronVariablesInstance) {
return;
Expand All @@ -71,7 +91,7 @@ export const GroupingMenuButton = () => {
tooltip: '',
class: undefined,
enabled: true,
checked: grouping === PositronVariablesGrouping.Kind,
checked: currentGrouping === PositronVariablesGrouping.Kind,
run: () => {
if (!positronVariablesContext.activePositronVariablesInstance) {
return;
Expand All @@ -89,7 +109,7 @@ export const GroupingMenuButton = () => {
tooltip: '',
class: undefined,
enabled: true,
checked: grouping === PositronVariablesGrouping.Size,
checked: currentGrouping === PositronVariablesGrouping.Size,
run: () => {
if (!positronVariablesContext.activePositronVariablesInstance) {
return;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
import './groupingMenuButton.css';

// React.
import React from 'react';
import React, { useState, useEffect } from 'react';

// Other dependencies.
import { localize } from '../../../../../nls.js';
Expand All @@ -16,6 +16,7 @@ import { ActionBarMenuButton } from '../../../../../platform/positronActionBar/b
import { usePositronVariablesContext } from '../positronVariablesContext.js';
import { PositronVariablesSorting } from '../../../../services/positronVariables/common/interfaces/positronVariablesInstance.js';
import { ThemeIcon } from '../../../../../base/common/themables.js';
import { DisposableStore } from '../../../../../base/common/lifecycle.js';

/**
* Localized strings.
Expand All @@ -30,19 +31,38 @@ export const SortingMenuButton = () => {
// Context hooks.
const positronVariablesContext = usePositronVariablesContext();

// State for current sorting and highlight recent
const [currentSorting, setCurrentSorting] = useState<PositronVariablesSorting | undefined>();
const [currentHighlightRecent, setCurrentHighlightRecent] = useState<boolean | undefined>();

// Subscribe to changes in entries (which happen when sorting changes)
useEffect(() => {
const disposableStore = new DisposableStore();

if (positronVariablesContext.activePositronVariablesInstance) {
// Subscribe to entries changes
disposableStore.add(
positronVariablesContext.activePositronVariablesInstance.onDidChangeEntries(() => {
setCurrentSorting(positronVariablesContext.activePositronVariablesInstance?.sorting);
setCurrentHighlightRecent(positronVariablesContext.activePositronVariablesInstance?.highlightRecent);
})
);

// Set initial values
setCurrentSorting(positronVariablesContext.activePositronVariablesInstance.sorting);
setCurrentHighlightRecent(positronVariablesContext.activePositronVariablesInstance.highlightRecent);
}

return () => disposableStore.dispose();
}, [positronVariablesContext.activePositronVariablesInstance]);

// Builds the actions.
const actions = () => {
// This can't happen.
if (positronVariablesContext.activePositronVariablesInstance === undefined) {
return [];
}

// Get the current sorting.
const sorting = positronVariablesContext.activePositronVariablesInstance.
sorting;
const highlightRecent = positronVariablesContext.activePositronVariablesInstance.
highlightRecent;

// Build the actions.
const actions: IAction[] = [];

Expand All @@ -53,7 +73,7 @@ export const SortingMenuButton = () => {
tooltip: '',
class: undefined,
enabled: true,
checked: sorting === PositronVariablesSorting.Name,
checked: currentSorting === PositronVariablesSorting.Name,
run: () => {
if (!positronVariablesContext.activePositronVariablesInstance) {
return;
Expand All @@ -71,7 +91,7 @@ export const SortingMenuButton = () => {
tooltip: '',
class: undefined,
enabled: true,
checked: sorting === PositronVariablesSorting.Size,
checked: currentSorting === PositronVariablesSorting.Size,
run: () => {
if (!positronVariablesContext.activePositronVariablesInstance) {
return;
Expand All @@ -89,7 +109,7 @@ export const SortingMenuButton = () => {
tooltip: '',
class: undefined,
enabled: true,
checked: sorting === PositronVariablesSorting.Recent,
checked: currentSorting === PositronVariablesSorting.Recent,
run: () => {
if (!positronVariablesContext.activePositronVariablesInstance) {
return;
Expand All @@ -110,14 +130,14 @@ export const SortingMenuButton = () => {
tooltip: '',
class: undefined,
enabled: true,
checked: highlightRecent,
checked: currentHighlightRecent,
run: () => {
if (!positronVariablesContext.activePositronVariablesInstance) {
return;
}

positronVariablesContext.activePositronVariablesInstance.highlightRecent =
!highlightRecent;
!currentHighlightRecent;
}
});

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -242,6 +242,9 @@ export class PositronVariablesInstance extends Disposable implements IPositronVa
*/
set highlightRecent(highlighRecent: boolean) {
this._highlightRecent = highlighRecent;

// Update entries to trigger onDidChangeEntries event
this.updateEntries();
}

/**
Expand Down