diff --git a/vripper-gui/src/main/kotlin/me/vripper/gui/view/popup/RenameView.kt b/vripper-gui/src/main/kotlin/me/vripper/gui/view/popup/RenameView.kt new file mode 100644 index 0000000..f1b7265 --- /dev/null +++ b/vripper-gui/src/main/kotlin/me/vripper/gui/view/popup/RenameView.kt @@ -0,0 +1,42 @@ +package me.vripper.gui.view.popup + +import javafx.beans.property.SimpleStringProperty +import javafx.geometry.Pos +import javafx.scene.control.TextField +import javafx.scene.layout.Priority +import javafx.scene.layout.VBox +import me.vripper.gui.controller.PostController +import tornadofx.* + +class RenameView : Fragment("Rename download post") { + + val postId: Long by param() + val name: String by param() + private val textAreaProperty = SimpleStringProperty() + private val postController: PostController by inject() + lateinit var input: TextField + + override fun onDock() { + textAreaProperty.value = name + } + + override val root = vbox(alignment = Pos.CENTER_RIGHT) { + padding = insets(all = 5) + spacing = 5.0 + input = textfield { + VBox.setVgrow(this, Priority.ALWAYS) + bind(textAreaProperty) + } + button("Ok") { + imageview("search.png") { + fitWidth = 18.0 + fitHeight = 18.0 + } + disableWhen(textAreaProperty.isEmpty) + action { + postController.rename(postId, textAreaProperty.value) + close() + } + } + } +} \ No newline at end of file diff --git a/vripper-gui/src/main/resources/edit.png b/vripper-gui/src/main/resources/edit.png new file mode 100644 index 0000000..4e14978 Binary files /dev/null and b/vripper-gui/src/main/resources/edit.png differ diff --git a/vripper-web-ui/src/app/rename-dialog/rename-dialog.component.html b/vripper-web-ui/src/app/rename-dialog/rename-dialog.component.html new file mode 100644 index 0000000..d2c05af --- /dev/null +++ b/vripper-web-ui/src/app/rename-dialog/rename-dialog.component.html @@ -0,0 +1,13 @@ +

Confirmation

+ +
+ + Folder name + + +
+ + + + +
diff --git a/vripper-web-ui/src/app/rename-dialog/rename-dialog.component.scss b/vripper-web-ui/src/app/rename-dialog/rename-dialog.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/vripper-web-ui/src/app/rename-dialog/rename-dialog.component.spec.ts b/vripper-web-ui/src/app/rename-dialog/rename-dialog.component.spec.ts new file mode 100644 index 0000000..14a40c0 --- /dev/null +++ b/vripper-web-ui/src/app/rename-dialog/rename-dialog.component.spec.ts @@ -0,0 +1,21 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { RenameDialogComponent } from './rename-dialog.component'; + +describe('ConfirmComponent', () => { + let component: RenameDialogComponent; + let fixture: ComponentFixture; + + beforeEach(() => { + TestBed.configureTestingModule({ + imports: [RenameDialogComponent], + }); + fixture = TestBed.createComponent(RenameDialogComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/vripper-web-ui/src/app/rename-dialog/rename-dialog.component.ts b/vripper-web-ui/src/app/rename-dialog/rename-dialog.component.ts new file mode 100644 index 0000000..b5bf54c --- /dev/null +++ b/vripper-web-ui/src/app/rename-dialog/rename-dialog.component.ts @@ -0,0 +1,53 @@ +import { ChangeDetectionStrategy, Component, Inject } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { + MAT_DIALOG_DATA, + MatDialogModule, + MatDialogRef, +} from '@angular/material/dialog'; +import { MatButtonModule } from '@angular/material/button'; +import { FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms'; +import { MatFormFieldModule } from '@angular/material/form-field'; +import { MatInputModule } from '@angular/material/input'; + +export interface RenameDialogData { + postId: number; + name: string; +} + +export interface RenameDialogResult { + postId: number; + name: string; +} + +@Component({ + selector: 'app-rename-dialog', + standalone: true, + imports: [ + CommonModule, + MatDialogModule, + MatButtonModule, + FormsModule, + MatFormFieldModule, + MatInputModule, + ReactiveFormsModule, + ], + templateUrl: './rename-dialog.component.html', + styleUrls: ['./rename-dialog.component.scss'], + changeDetection: ChangeDetectionStrategy.OnPush, +}) +export class RenameDialogComponent { + formControl = new FormControl(this.data.name); + + constructor( + public dialogRef: MatDialogRef, + @Inject(MAT_DIALOG_DATA) public data: RenameDialogData + ) {} + + confirm() { + this.dialogRef.close({ + postId: this.data.postId, + name: this.formControl.value, + } as RenameDialogResult); + } +} diff --git a/vripper-web/src/main/kotlin/me/vripper/web/restendpoints/domain/RenameRequest.kt b/vripper-web/src/main/kotlin/me/vripper/web/restendpoints/domain/RenameRequest.kt new file mode 100644 index 0000000..2bd3613 --- /dev/null +++ b/vripper-web/src/main/kotlin/me/vripper/web/restendpoints/domain/RenameRequest.kt @@ -0,0 +1,3 @@ +package me.vripper.web.restendpoints.domain + +data class RenameRequest(val postId: Long, val name: String)