@@ -2,6 +2,8 @@ import java.io.{FileWriter, BufferedWriter, File}
2
2
3
3
object GenCompatibleClasses {
4
4
5
+ val generatorSource = new File (" GenCompatibleClasses.scala" )
6
+
5
7
def genMain (targetDir : File , version : String , scalaVersion : String ): Seq [File ] = {
6
8
targetDir.mkdirs()
7
9
val listCellRendererClass = Class .forName(" javax.swing.ListCellRenderer" )
@@ -16,55 +18,59 @@ object GenCompatibleClasses {
16
18
val java6ClassesFiles =
17
19
java6Classes.map { case (name, cls) =>
18
20
val file = new File (targetDir, name + " .scala" )
19
- val bw = new BufferedWriter (new FileWriter (file))
20
- try {
21
- bw.write(" package org.scalatest.tools\n " )
22
- bw.write(" import javax.swing._\n " )
23
- if (isJava7)
24
- bw.write(cls + " [EventHolder]" )
25
- else
26
- bw.write(cls)
27
- }
28
- finally {
29
- bw.flush()
30
- bw.close()
21
+ if (! file.exists || generatorSource.lastModified > file.lastModified) {
22
+ val bw = new BufferedWriter (new FileWriter (file))
23
+ try {
24
+ bw.write(" package org.scalatest.tools\n " )
25
+ bw.write(" import javax.swing._\n " )
26
+ if (isJava7)
27
+ bw.write(cls + " [EventHolder]" )
28
+ else
29
+ bw.write(cls)
30
+ }
31
+ finally {
32
+ bw.flush()
33
+ bw.close()
34
+ }
35
+ println(" Generated " + file.getAbsolutePath)
31
36
}
32
- println(" Generated " + file.getAbsolutePath)
33
37
file
34
38
}
35
39
36
40
val file = new File (targetDir, " EventHolderListCellRenderer.scala" )
37
- val bw = new BufferedWriter (new FileWriter (file))
41
+ if (! file.exists || generatorSource.lastModified > file.lastModified) {
42
+ val bw = new BufferedWriter (new FileWriter (file))
38
43
39
- try {
40
- bw.write(" package org.scalatest.tools\n " )
41
- bw.write(" import java.awt.Component\n " )
42
- bw.write(" import javax.swing._\n " )
43
- if (isJava7) { // workaround from http://www.scala-lang.org/old/node/10687
44
- bw.write(" private[tools] trait EventHolderListCellRenderer extends ListCellRenderer[EventHolder] {\n " )
45
- bw.write(" private val defaultRenderer: ListCellRenderer[EventHolder] = (new DefaultListCellRenderer()).asInstanceOf[ListCellRenderer[EventHolder]]\n " )
46
- bw.write(" protected def decorate(renderer: JLabel, value: Object, isSelected: Boolean): Component\n " )
47
- bw.write(" def getListCellRendererComponent(list: JList[_ <: EventHolder], value: EventHolder, index: Int, isSelected: Boolean, cellHasFocus: Boolean): Component = {\n " )
48
- bw.write(" val renderer: JLabel = defaultRenderer.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus).asInstanceOf[JLabel]\n " )
49
- bw.write(" decorate(renderer, value, isSelected)\n " )
50
- bw.write(" }" )
51
- bw.write(" }\n " )
44
+ try {
45
+ bw.write(" package org.scalatest.tools\n " )
46
+ bw.write(" import java.awt.Component\n " )
47
+ bw.write(" import javax.swing._\n " )
48
+ if (isJava7) { // workaround from http://www.scala-lang.org/old/node/10687
49
+ bw.write(" private[tools] trait EventHolderListCellRenderer extends ListCellRenderer[EventHolder] {\n " )
50
+ bw.write(" private val defaultRenderer: ListCellRenderer[EventHolder] = (new DefaultListCellRenderer()).asInstanceOf[ListCellRenderer[EventHolder]]\n " )
51
+ bw.write(" protected def decorate(renderer: JLabel, value: Object, isSelected: Boolean): Component\n " )
52
+ bw.write(" def getListCellRendererComponent(list: JList[_ <: EventHolder], value: EventHolder, index: Int, isSelected: Boolean, cellHasFocus: Boolean): Component = {\n " )
53
+ bw.write(" val renderer: JLabel = defaultRenderer.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus).asInstanceOf[JLabel]\n " )
54
+ bw.write(" decorate(renderer, value, isSelected)\n " )
55
+ bw.write(" }" )
56
+ bw.write(" }\n " )
57
+ }
58
+ else {
59
+ bw.write(" private[tools] trait EventHolderListCellRenderer extends ListCellRenderer {\n " )
60
+ bw.write(" private val defaultRenderer: DefaultListCellRenderer = new DefaultListCellRenderer()\n " )
61
+ bw.write(" protected def decorate(renderer: JLabel, value: Object, isSelected: Boolean): Component\n " )
62
+ bw.write(" def getListCellRendererComponent(list: JList, value: Object, index: Int, isSelected: Boolean, cellHasFocus: Boolean): Component = {\n " )
63
+ bw.write(" val renderer: JLabel = defaultRenderer.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus).asInstanceOf[JLabel]\n " )
64
+ bw.write(" decorate(renderer, value, isSelected)\n " )
65
+ bw.write(" }" )
66
+ bw.write(" }\n " )
67
+ }
52
68
}
53
- else {
54
- bw.write(" private[tools] trait EventHolderListCellRenderer extends ListCellRenderer {\n " )
55
- bw.write(" private val defaultRenderer: DefaultListCellRenderer = new DefaultListCellRenderer()\n " )
56
- bw.write(" protected def decorate(renderer: JLabel, value: Object, isSelected: Boolean): Component\n " )
57
- bw.write(" def getListCellRendererComponent(list: JList, value: Object, index: Int, isSelected: Boolean, cellHasFocus: Boolean): Component = {\n " )
58
- bw.write(" val renderer: JLabel = defaultRenderer.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus).asInstanceOf[JLabel]\n " )
59
- bw.write(" decorate(renderer, value, isSelected)\n " )
60
- bw.write(" }" )
61
- bw.write(" }\n " )
69
+ finally {
70
+ bw.flush()
71
+ bw.close()
62
72
}
63
73
}
64
- finally {
65
- bw.flush()
66
- bw.close()
67
- }
68
74
69
75
java6ClassesFiles.toSeq ++ Seq (file)
70
76
}
0 commit comments