Skip to content

Commit 552ad94

Browse files
committed
Adds gui for code style settings
1 parent 8a7279c commit 552ad94

File tree

11 files changed

+115
-21
lines changed

11 files changed

+115
-21
lines changed

kotlin-eclipse-core/src/org/jetbrains/kotlin/core/formatting/KotlinCodeStyleManager.kt

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,10 @@ package org.jetbrains.kotlin.core.formatting
33
import com.intellij.psi.codeStyle.CodeStyleSettings
44
import org.eclipse.core.resources.IProject
55
import org.eclipse.core.resources.ProjectScope
6-
import org.jetbrains.kotlin.core.builder.KotlinPsiManager
76
import org.jetbrains.kotlin.core.preferences.KotlinCodeStyleProperties
87
import org.jetbrains.kotlin.idea.formatter.KotlinObsoleteCodeStyle
98
import org.jetbrains.kotlin.idea.formatter.KotlinPredefinedCodeStyle
109
import org.jetbrains.kotlin.idea.formatter.KotlinStyleGuideCodeStyle
11-
import org.jetbrains.kotlin.psi.KtFile
1210
import java.util.concurrent.ConcurrentHashMap
1311

1412
object KotlinCodeStyleManager {
@@ -29,18 +27,26 @@ object KotlinCodeStyleManager {
2927

3028
fun get(id: String): CodeStyleSettings? = stylesCache[id] ?: createStyleFromPredef(id)
3129

32-
// Uses the same logic as ConcurrentHashMap.getOrPut() but due to possible nullability cannot be expressed by it.
30+
// Uses the same logic as ConcurrentHashMap.getOrPut() but due to possible nullability cannot be expressed by that method.
3331
private fun createStyleFromPredef(id: String): CodeStyleSettings? = predefinedStyles[id]
3432
?.let { CodeStyleSettings().also(it::apply) }
3533
?.let { stylesCache.putIfAbsent(id, it) ?: it }
3634

3735
fun invalidate(id: String) {
3836
stylesCache -= id
3937
}
38+
39+
fun getStyleLabel(id: String?) =
40+
id?.let { predefinedStyles[it]?.name ?: it } ?: "unknown"
4041
}
4142

42-
val IProject.codeStyle: CodeStyleSettings
43+
private val IProject.codeStyleSettings
4344
get() = KotlinCodeStyleProperties(ProjectScope(this))
45+
.takeIf { it.globalsOverridden }
46+
?: KotlinCodeStyleProperties.workspaceInstance
47+
48+
val IProject.codeStyle: CodeStyleSettings
49+
get() = codeStyleSettings
4450
.codeStyleId
4551
?.let { KotlinCodeStyleManager.get(it) }
4652
?: CodeStyleSettings()

kotlin-eclipse-core/src/org/jetbrains/kotlin/core/preferences/KotlinCodeStyleProperties.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,4 +16,8 @@ class KotlinCodeStyleProperties(scope: IScopeContext = InstanceScope.INSTANCE)
1616
var globalsOverridden by BooleanPreference()
1717

1818
var codeStyleId by StringPreference()
19+
20+
companion object {
21+
val workspaceInstance by lazy { KotlinCodeStyleProperties() }
22+
}
1923
}

kotlin-eclipse-ui/plugin.xml

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -212,22 +212,16 @@
212212
</page>
213213
<page
214214
category="kotlin-eclipse-ui.preferences"
215-
class="org.jetbrains.kotlin.preferences.EditorPreferencePage"
216-
id="kotlin-eclipse-ui.preferences.editor"
217-
name="Editor">
215+
class="org.jetbrains.kotlin.preferences.style.WorkspaceCodeStylePropertyPage"
216+
id="kotlin-eclipse-ui.preferences.style"
217+
name="Code style">
218218
</page>
219219
<page
220220
category="kotlin-eclipse-ui.preferences"
221-
class="org.jetbrains.kotlin.preferences.WorkspaceCompilerPropertyPage"
221+
class="org.jetbrains.kotlin.preferences.compiler.WorkspaceCompilerPropertyPage"
222222
id="kotlin-eclipse-ui.preferences.compiler"
223223
name="Compiler">
224224
</page>
225-
<page
226-
category="kotlin-eclipse-ui.preferences"
227-
class="org.jetbrains.kotlin.preferences.KotlinTemplatePreferencePage"
228-
id="org.jetbrains.kotlin.ui.preferences.templates"
229-
name="Template">
230-
</page>
231225
</extension>
232226
<extension
233227
point="org.eclipse.ui.editors">
@@ -896,7 +890,7 @@
896890
<extension
897891
point="org.eclipse.ui.propertyPages">
898892
<page
899-
class="org.jetbrains.kotlin.preferences.ProjectCompilerPropertyPage"
893+
class="org.jetbrains.kotlin.preferences.compiler.ProjectCompilerPropertyPage"
900894
id="org.jetbrains.kotlin.ui.project-properties"
901895
name="Kotlin Compiler">
902896
<enabledWhen>
@@ -905,5 +899,15 @@
905899
</reference>
906900
</enabledWhen>
907901
</page>
902+
<page
903+
class="org.jetbrains.kotlin.preferences.style.ProjectCodeStylePropertyPage"
904+
id="org.jetbrains.kotlin.ui.project-properties-codestyle"
905+
name="Kotlin Code Style">
906+
<enabledWhen>
907+
<reference
908+
definitionId="org.jetbrains.kotlin.core.hasNature">
909+
</reference>
910+
</enabledWhen>
911+
</page>
908912
</extension>
909913
</plugin>

kotlin-eclipse-ui/src/org/jetbrains/kotlin/preferences/CompilerPluginDialog.kt renamed to kotlin-eclipse-ui/src/org/jetbrains/kotlin/preferences/compiler/CompilerPluginDialog.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package org.jetbrains.kotlin.preferences
1+
package org.jetbrains.kotlin.preferences.compiler
22

33
import org.eclipse.jface.dialogs.IDialogConstants
44
import org.eclipse.jface.dialogs.MessageDialog
@@ -8,7 +8,6 @@ import org.eclipse.swt.layout.GridLayout
88
import org.eclipse.swt.widgets.Composite
99
import org.eclipse.swt.widgets.Control
1010
import org.eclipse.swt.widgets.Shell
11-
import org.eclipse.swt.widgets.Text
1211
import org.jetbrains.kotlin.core.preferences.CompilerPlugin
1312
import org.jetbrains.kotlin.core.preferences.PreferencesCollection
1413
import org.jetbrains.kotlin.swt.builders.*

kotlin-eclipse-ui/src/org/jetbrains/kotlin/preferences/ProjectCompilerPropertyPage.kt renamed to kotlin-eclipse-ui/src/org/jetbrains/kotlin/preferences/compiler/ProjectCompilerPropertyPage.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
1-
package org.jetbrains.kotlin.preferences
1+
package org.jetbrains.kotlin.preferences.compiler
22

33
import org.eclipse.core.resources.IProject
44
import org.eclipse.core.resources.IncrementalProjectBuilder
55
import org.eclipse.swt.widgets.Composite
66
import org.eclipse.swt.widgets.Control
77
import org.eclipse.ui.IWorkbenchPropertyPage
88
import org.jetbrains.kotlin.core.model.KotlinEnvironment
9+
import org.jetbrains.kotlin.preferences.BasePropertyPage
910
import org.jetbrains.kotlin.preferences.views.projectCompilerPropertiesView
1011
import org.jetbrains.kotlin.swt.builders.asView
1112

kotlin-eclipse-ui/src/org/jetbrains/kotlin/preferences/RebuildJob.kt renamed to kotlin-eclipse-ui/src/org/jetbrains/kotlin/preferences/compiler/RebuildJob.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package org.jetbrains.kotlin.preferences
1+
package org.jetbrains.kotlin.preferences.compiler
22

33
import org.eclipse.core.runtime.CoreException
44
import org.eclipse.core.runtime.IProgressMonitor

kotlin-eclipse-ui/src/org/jetbrains/kotlin/preferences/WorkspaceCompilerPropertyPage.kt renamed to kotlin-eclipse-ui/src/org/jetbrains/kotlin/preferences/compiler/WorkspaceCompilerPropertyPage.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package org.jetbrains.kotlin.preferences
1+
package org.jetbrains.kotlin.preferences.compiler
22

33
import org.eclipse.core.resources.IncrementalProjectBuilder.FULL_BUILD
44
import org.eclipse.core.resources.ResourcesPlugin
@@ -8,6 +8,7 @@ import org.eclipse.ui.IWorkbench
88
import org.eclipse.ui.IWorkbenchPreferencePage
99
import org.jetbrains.kotlin.core.model.KotlinEnvironment
1010
import org.jetbrains.kotlin.core.preferences.KotlinProperties
11+
import org.jetbrains.kotlin.preferences.BasePropertyPage
1112
import org.jetbrains.kotlin.preferences.views.compilerPropertiesView
1213
import org.jetbrains.kotlin.swt.builders.asView
1314

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
package org.jetbrains.kotlin.preferences.style
2+
3+
import org.eclipse.core.resources.IProject
4+
import org.eclipse.core.resources.ProjectScope
5+
import org.eclipse.swt.widgets.Composite
6+
import org.eclipse.swt.widgets.Control
7+
import org.eclipse.ui.IWorkbenchPropertyPage
8+
import org.jetbrains.kotlin.core.preferences.KotlinCodeStyleProperties
9+
import org.jetbrains.kotlin.preferences.BasePropertyPage
10+
import org.jetbrains.kotlin.preferences.views.codeStylePropertiesView
11+
import org.jetbrains.kotlin.swt.builders.*
12+
import org.jetbrains.kotlin.utils.LazyObservable
13+
import kotlin.properties.Delegates
14+
15+
class ProjectCodeStylePropertyPage : BasePropertyPage(), IWorkbenchPropertyPage {
16+
// project must be lazy initialized, because getElement() called during construction of page object returns null
17+
val project: IProject by lazy { element.getAdapter(IProject::class.java) }
18+
19+
private var overrideFlag by LazyObservable({ properties.globalsOverridden }) { _, _, v ->
20+
properties.globalsOverridden = v
21+
settingsView.enabled = v
22+
}
23+
24+
private lateinit var settingsView: View<Composite>
25+
26+
override val properties by lazy { KotlinCodeStyleProperties(ProjectScope(project)) }
27+
28+
override fun createUI(parent: Composite): Control =
29+
parent.asView.apply {
30+
checkbox(::overrideFlag, "Enable project speciffic settings")
31+
separator { layout(horizontalGrab = true) }
32+
settingsView = codeStylePropertiesView(properties) {
33+
enabled = properties.globalsOverridden
34+
}
35+
}.control
36+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package org.jetbrains.kotlin.preferences.style
2+
3+
import org.eclipse.swt.widgets.Composite
4+
import org.eclipse.swt.widgets.Control
5+
import org.eclipse.ui.IWorkbench
6+
import org.eclipse.ui.IWorkbenchPreferencePage
7+
import org.jetbrains.kotlin.core.preferences.KotlinCodeStyleProperties
8+
import org.jetbrains.kotlin.preferences.BasePropertyPage
9+
import org.jetbrains.kotlin.preferences.views.codeStylePropertiesView
10+
import org.jetbrains.kotlin.swt.builders.*
11+
12+
class WorkspaceCodeStylePropertyPage : BasePropertyPage(), IWorkbenchPreferencePage {
13+
14+
override val properties = KotlinCodeStyleProperties.workspaceInstance
15+
16+
override fun init(workbench: IWorkbench?) {
17+
}
18+
19+
override fun createUI(parent: Composite): Control =
20+
parent.asView.apply {
21+
codeStylePropertiesView(properties)
22+
}.control
23+
}

kotlin-eclipse-ui/src/org/jetbrains/kotlin/preferences/views/CompilerPropertiesView.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import org.jetbrains.kotlin.config.JvmTarget
1111
import org.jetbrains.kotlin.config.LanguageVersion
1212
import org.jetbrains.kotlin.core.preferences.CompilerPlugin
1313
import org.jetbrains.kotlin.core.preferences.KotlinProperties
14-
import org.jetbrains.kotlin.preferences.CompilerPluginDialog
14+
import org.jetbrains.kotlin.preferences.compiler.CompilerPluginDialog
1515
import org.jetbrains.kotlin.swt.builders.*
1616
import org.jetbrains.kotlin.utils.LazyObservable
1717
import kotlin.properties.Delegates

0 commit comments

Comments
 (0)