Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/phabricator
Path: blob/master/src/applications/differential/engine/DifferentialFileTreeEngine.php
12256 views
1
<?php
2
3
final class DifferentialFileTreeEngine
4
extends Phobject {
5
6
private $viewer;
7
private $changesets;
8
private $disabled;
9
private $ownedChangesets;
10
11
public function setViewer($viewer) {
12
$this->viewer = $viewer;
13
return $this;
14
}
15
16
public function getViewer() {
17
return $this->viewer;
18
}
19
20
public function getIsVisible() {
21
return (bool)$this->getSetting($this->getVisibleSettingKey());
22
}
23
24
public function setDisabled($disabled) {
25
$this->disabled = $disabled;
26
return $this;
27
}
28
29
public function getDisabled() {
30
return $this->disabled;
31
}
32
33
public function setChangesets(array $changesets) {
34
$this->changesets = $changesets;
35
return $this;
36
}
37
38
public function getChangesets() {
39
return $this->changesets;
40
}
41
42
public function newView($content) {
43
if ($this->getDisabled()) {
44
return $content;
45
}
46
47
require_celerity_resource('diff-tree-view-css');
48
49
$width = $this->getWidth();
50
$is_visible = $this->getIsVisible();
51
52
$formation_view = new PHUIFormationView();
53
54
$flank_view = $formation_view->newFlankColumn()
55
->setHeaderText(pht('Paths'))
56
->setIsResizable(true)
57
->setIsFixed(true)
58
->setIsVisible($is_visible)
59
->setIsDesktopOnly(true)
60
->setWidth($width)
61
->setMinimumWidth($this->getMinimumWidth())
62
->setMaximumWidth($this->getMaximumWidth());
63
64
$viewer = $this->getViewer();
65
if ($viewer->isLoggedIn()) {
66
$flank_view
67
->setExpanderTooltip(pht('Show Paths Panel'))
68
->setVisibleSettingKey($this->getVisibleSettingKey())
69
->setWidthSettingKey($this->getWidthSettingKey());
70
}
71
72
$head_view = id(new PHUIListView())
73
->addMenuItem(
74
id(new PHUIListItemView())
75
->setIcon('fa-list')
76
->setName(pht('Table of Contents'))
77
->setKeyCommand('t')
78
->setHref('#'));
79
$flank_view->setHead($head_view);
80
81
$tail_view = id(new PHUIListView());
82
83
if ($viewer->isLoggedIn()) {
84
$tail_view->addMenuItem(
85
id(new PHUIListItemView())
86
->setIcon('fa-comment-o')
87
->setName(pht('Add Comment'))
88
->setKeyCommand('x')
89
->setHref('#'));
90
}
91
92
$tail_view
93
->addMenuItem(
94
id(new PHUIListItemView())
95
->setIcon('fa-chevron-left')
96
->setName(pht('Hide Panel'))
97
->setKeyCommand('f')
98
->setHref('#'))
99
->addMenuItem(
100
id(new PHUIListItemView())
101
->setIcon('fa-keyboard-o')
102
->setName(pht('Keyboard Reference'))
103
->setKeyCommand('?')
104
->setHref('#'));
105
$flank_view->setTail($tail_view);
106
107
$main_column = $formation_view->newContentColumn()
108
->appendChild($content);
109
110
return $formation_view;
111
}
112
113
private function getVisibleSettingKey() {
114
return PhabricatorFiletreeVisibleSetting::SETTINGKEY;
115
}
116
117
private function getWidthSettingKey() {
118
return PhabricatorFiletreeWidthSetting::SETTINGKEY;
119
}
120
121
private function getWidth() {
122
$width = (int)$this->getSetting($this->getWidthSettingKey());
123
124
if (!$width) {
125
$width = $this->getDefaultWidth();
126
}
127
128
$min = $this->getMinimumWidth();
129
if ($width < $min) {
130
$width = $min;
131
}
132
133
$max = $this->getMaximumWidth();
134
if ($width > $max) {
135
$width = $max;
136
}
137
138
return $width;
139
}
140
141
private function getDefaultWidth() {
142
return 240;
143
}
144
145
private function getMinimumWidth() {
146
return 150;
147
}
148
149
private function getMaximumWidth() {
150
return 512;
151
}
152
153
private function getSetting($key) {
154
$viewer = $this->getViewer();
155
return $viewer->getUserSetting($key);
156
}
157
158
159
}
160
161