IDE: Filter the NewDialog using both 2 columns. Improve OK button enabled state update. Issue #31471.

git-svn-id: trunk@54336 -
This commit is contained in:
juha 2017-03-03 15:57:48 +00:00
parent 0bc15a664b
commit 5cb5446db2
2 changed files with 24 additions and 8 deletions

View File

@ -83,6 +83,7 @@ object NewOtherDialog: TNewOtherDialog
SortType = stText
TabOrder = 1
ViewStyle = vsReport
OnSelectItem = InheritableComponentsListViewSelectItem
end
object CompFilterEdit: TListViewFilterEdit
AnchorSideTop.Control = DescriptionLabel
@ -96,8 +97,8 @@ object NewOtherDialog: TNewOtherDialog
Anchors = [akTop, akLeft, akRight]
MaxLength = 0
TabOrder = 0
Text = 'listviewfilteredit1'
FilteredListview = InheritableComponentsListView
ByAllFields = True
end
end
object Splitter1: TSplitter

View File

@ -135,6 +135,8 @@ type
Panel1: TPanel;
Splitter1: TSplitter;
procedure HelpButtonClick(Sender: TObject);
procedure InheritableComponentsListViewSelectItem(Sender: TObject;
Item: TListItem; Selected: Boolean);
procedure ItemsTreeViewSelectionChanged(Sender: TObject);
procedure OKButtonClick(Sender: TObject);
private
@ -168,7 +170,7 @@ var
begin
NewItem := nil;
NewOtherDialog := TNewOtherDialog.Create(nil, AOnlyModules);
Result := NewOtherDialog.ShowModal;
Result := NewOtherDialog.ShowModal;
if Result = mrOk then
NewItem := NewOtherDialog.NewItem;
IDEDialogLayoutList.SaveLayout(NewOtherDialog);
@ -325,12 +327,26 @@ begin
end;
procedure TNewOtherDialog.ItemsTreeViewSelectionChanged(Sender: TObject);
var
Node: TTreeNode;
begin
ButtonPanel.OKButton.Enabled := (ItemsTreeView.Selected <> nil) and
(TObject(ItemsTreeView.Selected.Data) is TNewIDEItemTemplate);
Node := ItemsTreeView.Selected;
// For inherited comps OKButton is enabled also later when a ListView item is selected.
if Assigned(Node) and (TObject(Node.Data) is TNewItemProjectFile) and
(TNewItemProjectFile(Node.Data).Descriptor is TFileDescInheritedComponent)
then
ButtonPanel.OKButton.Enabled := Assigned(InheritableComponentsListView.Selected)
else
ButtonPanel.OKButton.Enabled := Assigned(Node) and (TObject(Node.Data) is TNewIDEItemTemplate);
UpdateDescription;
end;
procedure TNewOtherDialog.InheritableComponentsListViewSelectItem(
Sender: TObject; Item: TListItem; Selected: Boolean);
begin
ButtonPanel.OKButton.Enabled := Assigned((Sender as TListView).Selected);
end;
procedure TNewOtherDialog.HelpButtonClick(Sender: TObject);
begin
LazarusHelp.ShowHelpForIDEControl(Self);
@ -357,6 +373,7 @@ var
aNewItemTemplate: TNewIDEItemTemplate;
begin
ANode := ItemsTreeView.Selected;
CompFilterEdit.Visible := false;
InheritableComponentsListView.Visible := false;
if (ANode <> nil) and (ANode.Data <> nil) then
begin
@ -370,10 +387,8 @@ begin
begin
if TNewItemProjectFile(aNewItemTemplate).Descriptor is TFileDescInheritedComponent
then begin
CompFilterEdit.Visible := true;
InheritableComponentsListView.Visible := true;
//InheritableComponentsListView.Height:=InheritableComponentsListView.Parent.ClientHeight-50;
//if InheritableComponentsListView.Items.Count>0 then
// InheritableComponentsListView.Selected := InheritableComponentsListView.Items[0];
end;
end;
end;
@ -406,7 +421,7 @@ begin
SetupComponents;
FillItemsTree(AOnlyModules);
FillProjectInheritableItemsList;
CompFilterEdit.Clear;
CompFilterEdit.Visible := false;
InheritableComponentsListView.Visible := false;
IDEDialogLayoutList.ApplyLayout(Self, 570, 400);