Skip to content

Commit 688ab51

Browse files
committed
Initial draft conversion
1 parent 6e4418f commit 688ab51

13 files changed

Lines changed: 38 additions & 40 deletions

build.sbt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import org.nlogo.build.{ ExtensionDocumentationPlugin, NetLogoExtension }
22

33
enablePlugins(NetLogoExtension, ExtensionDocumentationPlugin)
44

5-
scalaVersion := "2.12.12"
5+
scalaVersion := "2.13.16"
66

77
name := "LevelSpace"
88
version := "2.3.4"
@@ -18,5 +18,6 @@ Test / scalaSource := baseDirectory.value / "src" / "test"
1818
scalacOptions ++= Seq("-deprecation", "-unchecked", "-Xfatal-warnings", "-encoding", "us-ascii", "-feature", "-release", "11")
1919

2020
libraryDependencies ++= Seq(
21-
"com.google.guava" % "guava" % "18.0"
21+
"com.google.guava" % "guava" % "18.0",
22+
"org.scala-lang.modules" %% "scala-parallel-collections" % "1.2.0"
2223
)

src/main/BackingModelManager.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ class BackingModelManager extends LSModelManager {
7676
}
7777
}
7878

79-
def syncTheme() {
79+
def syncTheme(): Unit = {
8080
guiComponent.syncTheme()
8181
models.foreach(_.syncTheme())
8282
backingModels.values.foreach(_._2.syncTheme())
@@ -89,5 +89,5 @@ class HeadlessBackingModelManager extends LSModelManager {
8989
def existingTab(filePath: String): Option[ModelCodeTab] = None
9090
def registerTab(filePath: String)
9191
(f: AbstractWorkspaceScala => ModelCodeTab): Option[ModelCodeTab] = None
92-
def syncTheme() {}
92+
def syncTheme(): Unit = {}
9393
}

src/main/ChildModel.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@ import org.nlogo.api.{CommandRunnable, ExtensionException, Version, Workspace}
77
import org.nlogo.theme.ThemeSync
88
import org.nlogo.workspace.AbstractWorkspaceScala
99

10-
import scala.collection.JavaConverters._
1110
import scala.concurrent.ExecutionContext.Implicits.global
1211
import scala.concurrent.Future
12+
import scala.jdk.CollectionConverters.IterableHasAsScala
1313

1414
abstract class ChildModel(val parentWorkspace: Workspace, val modelID: Int) extends ThemeSync {
1515
lazy val evaluator = new Evaluator(modelID, name, workspace, parentWorkspace.asInstanceOf[AbstractWorkspaceScala])
@@ -72,7 +72,7 @@ abstract class ChildModel(val parentWorkspace: Workspace, val modelID: Int) exte
7272
}
7373

7474
def seedRNG(rng: RNG, seed: Long): Unit = if (usesLevelSpace) {
75-
ask("ls:random-seed seed", Seq("seed" -> Double.box(seed)), Seq(), rng).waitFor
75+
ask("ls:random-seed seed", Seq("seed" -> Double.box(seed.toDouble)), Seq(), rng).waitFor
7676
} else {
7777
rng(workspace).setSeed(seed)
7878
}

src/main/GUIChildModel.scala

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -63,15 +63,15 @@ class GUIChildModel @throws(classOf[InterruptedException]) @throws(classOf[Exten
6363
// Wakes up the workspace if the speed slider is super low.
6464
// Makes it so there's not a long pause after increasing
6565
// the speed slider from a low position. BCH 6/18/2016
66-
workspace.updateManager().nudgeSleeper
66+
workspace.updateManager().nudgeSleeper()
6767
onEDT {
6868
panel.speedSlider.setValue((d * 2).intValue)
6969
}
7070
}
7171

7272
override def hide(): Unit = {
7373
workspace.updateManager().speed = 50
74-
workspace.updateManager().nudgeSleeper
74+
workspace.updateManager().nudgeSleeper()
7575
super.hide()
7676
}
7777

@@ -83,7 +83,7 @@ class GUIChildModel @throws(classOf[InterruptedException]) @throws(classOf[Exten
8383

8484
def workspace: GUIWorkspace = component.workspace
8585

86-
def syncTheme() {
86+
def syncTheme(): Unit = {
8787
menuBar.syncTheme()
8888
panel.syncTheme()
8989

@@ -99,21 +99,21 @@ class SyncedMenuBar extends JMenuBar with ThemeSync {
9999

100100
add(zoomMenu)
101101

102-
override def paintComponent(g: Graphics) {
102+
override def paintComponent(g: Graphics): Unit = {
103103
val g2d = Utils.initGraphics2D(g)
104104

105105
g2d.setColor(InterfaceColors.menuBackground)
106106
g2d.fillRect(0, 0, getWidth, getHeight)
107107
}
108108

109-
override def paintBorder(g: Graphics) {
109+
override def paintBorder(g: Graphics): Unit = {
110110
val g2d = Utils.initGraphics2D(g)
111111

112112
g2d.setColor(InterfaceColors.menuBarBorder)
113113
g2d.drawLine(0, getHeight - 1, getWidth, getHeight - 1)
114114
}
115115

116-
def syncTheme() {
116+
def syncTheme(): Unit = {
117117
zoomMenu.syncTheme()
118118
}
119119
}

src/main/GUIPanel.scala

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ extends JPanel with Events.OutputEvent.Handler with ThemeSync {
3636
cc.output.append(outputEvent.outputObject, outputEvent.wrapLines)
3737
}
3838

39-
def packSplitPane() {
39+
def packSplitPane(): Unit = {
4040
splitPane.setPreferredSize(
4141
splitPane.getOrientation match {
4242
case JSplitPane.HORIZONTAL_SPLIT =>
@@ -51,11 +51,11 @@ extends JPanel with Events.OutputEvent.Handler with ThemeSync {
5151
resetCommandCenter()
5252
}
5353

54-
def resetCommandCenter() {
54+
def resetCommandCenter(): Unit = {
5555
splitPane.resetToPreferredSizes()
5656
}
5757

58-
def syncTheme() {
58+
def syncTheme(): Unit = {
5959
controlStrip.setBackground(InterfaceColors.toolbarBackground)
6060
scrollPane.setBackground(InterfaceColors.interfaceBackground)
6161

@@ -77,12 +77,12 @@ extends ModelPanel(ws, panel, ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS, 1)
7777
val speedSlider = new JSlider(-110, 112, ws.speedSliderPosition().toInt)
7878
speedSlider.addChangeListener((_: ChangeEvent) => {
7979
ws.speedSliderPosition(speedSlider.getValue / 2)
80-
ws.updateManager().nudgeSleeper
80+
ws.updateManager().nudgeSleeper()
8181
})
8282
speedSliderPanel.add(speedSlider)
8383
controlStrip.add(speedSliderPanel, BorderLayout.CENTER)
8484

85-
override def syncTheme() {
85+
override def syncTheme(): Unit = {
8686
super.syncTheme()
8787

8888
label.setForeground(InterfaceColors.toolbarText)

src/main/HeadlessChildModel.scala

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,6 @@ import org.nlogo.headless.HeadlessWorkspace
1010
import org.nlogo.ls.gui.ViewFrame
1111
import org.nlogo.workspace.{AbstractWorkspace, AbstractWorkspaceScala}
1212

13-
@throws(classOf[InterruptedException])
14-
@throws(classOf[ExtensionException])
15-
@throws(classOf[HaltException])
16-
@throws(classOf[IOException])
1713
class HeadlessChildModel (parentWorkspace: AbstractWorkspace, path: String, modelID: Int)
1814
extends ChildModel(parentWorkspace, modelID) {
1915

@@ -91,7 +87,7 @@ class HeadlessChildModel (parentWorkspace: AbstractWorkspace, path: String, mode
9187
def tryEagerOf(code: String, lets: Seq[(String, AnyRef)], args: Seq[AnyRef], rng: RNG): Notifying[AnyRef] =
9288
evaluator.report(code, lets, args, rng, parallel = usesLevelSpace || isVisible)
9389

94-
def syncTheme() {
90+
def syncTheme(): Unit = {
9591
frame.foreach(_.syncTheme())
9692
}
9793
}

src/main/InterfaceComponent.scala

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ with ThemeSync {
5454
override def stopInspectingAgent(agent: Agent): Unit = monitorManager.stopInspecting(agent)
5555
override def stopInspectingDeadAgents(): Unit = monitorManager.stopInspectingDeadAgents()
5656
override def closeAgentMonitors() = monitorManager.closeAll()
57-
override def newRenderer = new org.nlogo.render.Renderer(world)
57+
override def newRenderer = new org.nlogo.render.Renderer(this.world)
5858
override def updateModel(m: Model): Model = m
5959
}
6060

@@ -74,12 +74,12 @@ with ThemeSync {
7474
addLinkComponent(procedures)
7575
addLinkComponent(new CompilerManager(workspace, workspace.world.asInstanceOf[World with CompilationManagement], procedures))
7676
addLinkComponent(new CompiledEvent.Handler {
77-
override def handle(e: CompiledEvent) {
77+
override def handle(e: CompiledEvent): Unit = {
7878
if (e.error != null)
7979
throw e.error
8080
}})
8181
addLinkComponent(new LoadModelEvent.Handler {
82-
override def handle(e: LoadModelEvent) {
82+
override def handle(e: LoadModelEvent): Unit = {
8383
workspace.aggregateManager.load(e.model, workspace)
8484
}})
8585
addLinkComponent(listenerManager)
@@ -130,7 +130,7 @@ with ThemeSync {
130130
}
131131
}
132132

133-
def syncTheme() {
133+
def syncTheme(): Unit = {
134134
setBackground(InterfaceColors.interfaceBackground)
135135

136136
interfacePanel.syncTheme()

src/main/LevelSpace.scala

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,8 @@ import org.nlogo.nvm.HaltException
2525
import org.nlogo.theme.ThemeSync
2626
import org.nlogo.workspace.{ AbstractWorkspace, ExtensionManager => WorkspaceExtensionManager }
2727

28-
import scala.collection.JavaConverters._
28+
import scala.collection.immutable.ArraySeq
29+
import scala.jdk.CollectionConverters.ConcurrentMapHasAsScala
2930

3031
object LevelSpace {
3132
private var isHeadlessWorkspace = false
@@ -114,7 +115,7 @@ class LevelSpace extends DefaultClassManager with ThemeSync { // This can be acc
114115

115116
def containsModel(id: Int): Boolean = models.contains(id)
116117

117-
def modelList: Seq[Integer] = models.keys.toArray.sorted
118+
def modelList: Seq[Integer] = Seq(ArraySeq.unsafeWrapArray(models.keys.toArray.sorted): _*)
118119

119120
def numModels: Integer = models.size
120121

@@ -229,7 +230,7 @@ class LevelSpace extends DefaultClassManager with ThemeSync { // This can be acc
229230

230231
private def haltChildModels(): Unit = models.values.foreach(_.halt())
231232

232-
def syncTheme() {
233+
def syncTheme(): Unit = {
233234
modelManager.syncTheme()
234235
}
235236
}

src/main/LevelSpaceMenu.scala

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ import org.nlogo.fileformat.FileFormat
1616
import org.nlogo.swing.{ FileDialog, Menu, MenuItem }
1717
import org.nlogo.workspace.{AbstractWorkspaceScala, ModelsLibrary, ModelTracker, SaveModel}
1818

19-
import scala.collection.JavaConversions._
19+
import scala.jdk.CollectionConverters.SeqHasAsJava
2020

2121
trait ModelManager {
2222
def removeTab(tab: ModelCodeTab): Unit
@@ -107,10 +107,10 @@ class LevelSpaceMenu(tabManager: TabManager, val backingModelManager: ModelManag
107107
case e: CompilerException =>
108108
// we shouldn't have to raise an exception here, we should just be able to open it, but
109109
// in order to do that, we'll need to change child models not to compile in their constructors
110-
throw new ExtensionException(filePath + " did not compile properly. There is probably something wrong " +
111-
"with its code. Exception said" + e.getMessage);
112-
case e: IOException =>
113-
throw new ExtensionException("There was no model file at the path: \"" + filePath + "\"")
110+
throw new ExtensionException(s"$filePath did not compile properly. There is probably something wrong " +
111+
s"with its code. Exception said ${e.getMessage}")
112+
case e: IOException =>
113+
throw new ExtensionException(s"There was no model file at the path: \"$filePath\"")
114114
}
115115

116116

src/main/ModelCodeTab.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ with ModelSavedEvent.Handler {
6262

6363
protected var isDirty = false
6464

65-
override def close() {
65+
override def close(): Unit = {
6666
try {
6767
if (dirty && userWantsToSaveFile())
6868
save()

0 commit comments

Comments
 (0)