Skip to content

Commit

Permalink
Label ordering buttons
Browse files Browse the repository at this point in the history
  • Loading branch information
HebaruSan committed Aug 17, 2021
1 parent afa7145 commit 726bb54
Show file tree
Hide file tree
Showing 7 changed files with 137 additions and 71 deletions.
62 changes: 47 additions & 15 deletions GUI/Dialogs/EditLabelsDialog.Designer.cs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

91 changes: 80 additions & 11 deletions GUI/Dialogs/EditLabelsDialog.cs
Original file line number Diff line number Diff line change
Expand Up @@ -17,15 +17,17 @@ public EditLabelsDialog(IUser user, GameInstanceManager manager, ModuleLabelList
.Concat(manager.Instances.Keys).ToArray();
LoadTree();

this.ToolTip.SetToolTip(NameTextBox, Properties.Resources.EditLabelsToolTipName);
this.ToolTip.SetToolTip(ColorButton, Properties.Resources.EditLabelsToolTipColor);
this.ToolTip.SetToolTip(InstanceNameComboBox, Properties.Resources.EditLabelsToolTipInstance);
this.ToolTip.SetToolTip(HideFromOtherFiltersCheckBox, Properties.Resources.EditLabelsToolTipHide);
this.ToolTip.SetToolTip(NotifyOnChangesCheckBox, Properties.Resources.EditLabelsToolTipNotifyOnChanges);
this.ToolTip.SetToolTip(RemoveOnChangesCheckBox, Properties.Resources.EditLabelsToolTipRemoveOnChanges);
this.ToolTip.SetToolTip(AlertOnInstallCheckBox, Properties.Resources.EditLabelsToolTipAlertOnInstall);
this.ToolTip.SetToolTip(RemoveOnInstallCheckBox, Properties.Resources.EditLabelsToolTipRemoveOnInstall);
this.ToolTip.SetToolTip(HoldVersionCheckBox, Properties.Resources.EditLabelsToolTipHoldVersion);
ToolTip.SetToolTip(NameTextBox, Properties.Resources.EditLabelsToolTipName);
ToolTip.SetToolTip(ColorButton, Properties.Resources.EditLabelsToolTipColor);
ToolTip.SetToolTip(InstanceNameComboBox, Properties.Resources.EditLabelsToolTipInstance);
ToolTip.SetToolTip(HideFromOtherFiltersCheckBox, Properties.Resources.EditLabelsToolTipHide);
ToolTip.SetToolTip(NotifyOnChangesCheckBox, Properties.Resources.EditLabelsToolTipNotifyOnChanges);
ToolTip.SetToolTip(RemoveOnChangesCheckBox, Properties.Resources.EditLabelsToolTipRemoveOnChanges);
ToolTip.SetToolTip(AlertOnInstallCheckBox, Properties.Resources.EditLabelsToolTipAlertOnInstall);
ToolTip.SetToolTip(RemoveOnInstallCheckBox, Properties.Resources.EditLabelsToolTipRemoveOnInstall);
ToolTip.SetToolTip(HoldVersionCheckBox, Properties.Resources.EditLabelsToolTipHoldVersion);
ToolTip.SetToolTip(MoveUpButton, Properties.Resources.EditLabelsToolTipMoveUp);
ToolTip.SetToolTip(MoveDownButton, Properties.Resources.EditLabelsToolTipMoveDown);
}

private void LoadTree()
Expand All @@ -42,8 +44,7 @@ private void LoadTree()
: group.Key;
LabelSelectionTree.Nodes.Add(new TreeNode(
groupName,
group.OrderBy(mlbl => mlbl.Name)
.Select(mlbl => new TreeNode(mlbl.Name)
group.Select(mlbl => new TreeNode(mlbl.Name)
{
// Windows's TreeView has a bug where the node's visual
// width is based on the owning TreeView.Font rather
Expand All @@ -56,6 +57,16 @@ private void LoadTree()
.ToArray()
));
}
EnableDisableUpDownButtons();
if (currentlyEditing != null)
{
LabelSelectionTree.BeforeSelect -= LabelSelectionTree_BeforeSelect;
// Select the new node representing the label we're editing
LabelSelectionTree.SelectedNode = LabelSelectionTree.Nodes.Cast<TreeNode>()
.SelectMany(nd => nd.Nodes.Cast<TreeNode>())
.FirstOrDefault(nd => nd.Tag as ModuleLabel == currentlyEditing);
LabelSelectionTree.BeforeSelect += LabelSelectionTree_BeforeSelect;
}
LabelSelectionTree.ExpandAll();
LabelSelectionTree.EndUpdate();
}
Expand Down Expand Up @@ -171,12 +182,70 @@ private void StartEdit(ModuleLabel lbl)
HoldVersionCheckBox.Checked = lbl.HoldVersion;

DeleteButton.Enabled = labels.Labels.Contains(lbl);
EnableDisableUpDownButtons();

EditDetailsPanel.Visible = true;
EditDetailsPanel.BringToFront();
NameTextBox.Focus();
}

private void EnableDisableUpDownButtons()
{
if (currentlyEditing == null)
{
MoveUpButton.Enabled = MoveDownButton.Enabled = false;
}
else
{
var group = labels.Labels
.Where(lbl => lbl.InstanceName == currentlyEditing.InstanceName)
.ToList();
int groupIndex = group.IndexOf(currentlyEditing);
MoveUpButton.Enabled = groupIndex > 0;
MoveDownButton.Enabled = groupIndex >= 0 && groupIndex < group.Count - 1;
}
}

private void MoveUpButton_Click(object sender, EventArgs e)
{
if (currentlyEditing != null)
{
var group = labels.Labels
.Where(lbl => lbl.InstanceName == currentlyEditing.InstanceName)
.ToList();
int groupIndex = group.IndexOf(currentlyEditing);
if (groupIndex > 0)
{
// Swap with previous node
int mainIndex = Array.IndexOf(labels.Labels, currentlyEditing);
int prevIndex = Array.IndexOf(labels.Labels, group[groupIndex - 1]);
labels.Labels[mainIndex] = labels.Labels[prevIndex];
labels.Labels[prevIndex] = currentlyEditing;
LoadTree();
}
}
}

private void MoveDownButton_Click(object sender, EventArgs e)
{
if (currentlyEditing != null)
{
var group = labels.Labels
.Where(lbl => lbl.InstanceName == currentlyEditing.InstanceName)
.ToList();
int groupIndex = group.IndexOf(currentlyEditing);
if (groupIndex >= 0 && groupIndex < group.Count - 1)
{
// Swap with next node
int mainIndex = Array.IndexOf(labels.Labels, currentlyEditing);
int nextIndex = Array.IndexOf(labels.Labels, group[groupIndex + 1]);
labels.Labels[mainIndex] = labels.Labels[nextIndex];
labels.Labels[nextIndex] = currentlyEditing;
LoadTree();
}
}
}

private bool TryCloseEdit()
{
if (HasChanges())
Expand Down
Loading

0 comments on commit 726bb54

Please sign in to comment.