ASMR/src/main/kotlin/net/shadowfacts/asmr/TestCacaoScreen.kt

175 lines
5.3 KiB
Kotlin

package net.shadowfacts.asmr
import net.shadowfacts.cacao.CacaoScreen
import net.shadowfacts.cacao.Window
import net.shadowfacts.cacao.geometry.Point
import net.shadowfacts.cacao.util.Color
import net.shadowfacts.cacao.util.MouseButton
import net.shadowfacts.cacao.view.*
import net.shadowfacts.cacao.view.button.Button
import net.shadowfacts.cacao.viewcontroller.ViewController
import net.shadowfacts.kiwidsl.dsl
import no.birkett.kiwi.Constraint
/**
* @author shadowfacts
*/
class TestCacaoScreen: CacaoScreen() {
init {
val viewController = object: ViewController() {
override fun loadView() {
this.view = View()
}
override fun viewDidLoad() {
// val test = view.addSubview(object: View() {
// override fun mouseDragged(startPoint: Point, delta: Point, mouseButton: MouseButton): Boolean {
//
// return true
// }
// })
val draggable = view.addSubview(DraggableView())
createConstraints {
draggable.widthAnchor equalTo 50
draggable.heightAnchor equalTo 25
}
}
}
addWindow(Window(viewController))
}
class DraggableView: View() {
init {
backgroundColor = Color.WHITE
}
var xOffset: Double = 0.0
var yOffset: Double = 0.0
var xConstraint: Constraint? = null
var yConstraint: Constraint? = null
override fun wasAdded() {
super.wasAdded()
updateDraggingConstraints()
}
override fun mouseDragged(startPoint: Point, delta: Point, mouseButton: MouseButton): Boolean {
xOffset += delta.x
yOffset += delta.y
updateDraggingConstraints()
return true
}
private fun updateDraggingConstraints() {
if (xConstraint != null) solver.removeConstraint(xConstraint)
if (yConstraint != null) solver.removeConstraint(yConstraint)
solver.dsl {
xConstraint = (leftAnchor equalTo superview!!.leftAnchor + xOffset)
yConstraint = (topAnchor equalTo superview!!.topAnchor + yOffset)
}
window!!.layout()
}
}
// init {
// addWindow(Window().apply {
// val stack = addView(StackView(Axis.VERTICAL, StackView.Distribution.CENTER, spacing = 4.0).apply {
// backgroundColor = Color.WHITE
// })
// val red = stack.addArrangedSubview(TextureView(Texture(Identifier("textures/block/birch_log_top.png"), 0, 0, 16, 16)).apply {
// intrinsicContentSize = Size(50.0, 50.0)
// })
// val green = stack.addArrangedSubview(NinePatchView(NinePatchTexture.PANEL_BG).apply {
// intrinsicContentSize = Size(75.0, 100.0)
// })
// val blue = stack.addArrangedSubview(View().apply {
// intrinsicContentSize = Size(50.0, 50.0)
// backgroundColor = Color(0x0000ff)
// })
// val purple = blue.addSubview(DropdownButton(
// initialValue = RedstoneMode.HIGH,
// allValues = RedstoneMode.values().asIterable(),
// createView = { Label(it.name) },
// updateView = { newValue, label -> label.text = newValue.name }
// ).apply {
// handler = {
// println("dropdown value: ${it.value}")
// val dialog = DialogView(
// "New redstone mode",
// it.value.name,
// arrayOf(DialogView.DefaultButtonType.OK),
// Texture(Identifier("textures/block/birch_log_top.png"), 0, 0, 16, 16),
// buttonCallback = { _, window ->
// window.removeFromScreen()
// }
// )
// val dialogWindow = Window()
// dialogWindow.addView(dialog)
// this@TestCacaoScreen.addWindow(dialogWindow)
// }
// })
//
// val label = addView(Label("test ".repeat(100), maxLines = 5))
//
// solver.dsl {
// stack.topAnchor equalTo 0
// stack.centerXAnchor equalTo this@apply.centerXAnchor
// stack.widthAnchor equalTo 100
// purple.centerXAnchor equalTo blue.centerXAnchor
// purple.centerYAnchor equalTo blue.centerYAnchor
//// purple.widthAnchor equalTo 50
//
// label.topAnchor equalTo 0
// label.leftAnchor equalTo 0
// label.widthAnchor equalTo 100
// }
//
//
//// val red = addView(View().apply {
//// backgroundColor = Color(0xff0000)
//// })
//// val green = addView(View().apply {
//// backgroundColor = Color(0x00ff00)
//// })
//// val blue = addView(View().apply {
//// backgroundColor = Color(0x0000ff)
//// })
//// val purple = green.addSubview(View().apply {
//// backgroundColor = Color(0x800080)
//// })
//// purple.intrinsicContentSize = Size(width = 150.0, height = 150.0)
//// val label = purple.addSubview(Label("Hello, world!").apply {
//// textColor = Color.WHITE
//// })
////
//// solver.dsl {
//// red.leftAnchor equalTo 0
//// red.widthAnchor equalTo 200
//// red.topAnchor equalTo 0
//// red.heightAnchor equalTo 100
////
//// green.leftAnchor equalTo (red.leftAnchor + red.widthAnchor + 20)
//// green.widthAnchor equalTo red.widthAnchor
//// green.topAnchor equalTo 0
//// green.heightAnchor equalTo (red.heightAnchor + 100)
////
//// blue.leftAnchor equalTo green.leftAnchor
//// blue.widthAnchor equalTo green.widthAnchor
//// blue.topAnchor equalTo (green.topAnchor + green.heightAnchor)
//// blue.heightAnchor equalTo 50
////
////// purple.widthAnchor equalTo 100
////// purple.heightAnchor equalTo 100
//// purple.centerXAnchor equalTo green.centerXAnchor
//// purple.centerYAnchor equalTo green.centerYAnchor
////
//// label.centerXAnchor equalTo purple.centerXAnchor
//// label.centerYAnchor equalTo purple.centerYAnchor
//// }
////
//// layout()
// })
// }
}