Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Shire Skecth: A Multi-file viewer, render and edit #153

Closed
phodal opened this issue Dec 2, 2024 · 1 comment
Closed

Shire Skecth: A Multi-file viewer, render and edit #153

phodal opened this issue Dec 2, 2024 · 1 comment

Comments

@phodal
Copy link
Owner

phodal commented Dec 2, 2024

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

Describe the solution you'd like
A clear and concise description of what you want to happen.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Add any other context or screenshots about the feature request here.

Sketch

Diff Sketch

  • Inlay Diff
  • Apply, Revert Menu (AllIcons.Actions.Rollback), Cancel (AllIcons.Vcs.Abort)
图片

IDEA Apis:

<action id="Vcs.RollbackChangedLines" class="com.intellij.openapi.vcs.ex.RollbackLineStatusAction" icon="AllIcons.Actions.Rollback"/>
<action id="Vcs.ShowDiffChangedLines" class="com.intellij.openapi.vcs.ex.ShowDiffLineStatusAction" icon="AllIcons.Actions.Diff"/>

UI: TwosideContentPanel with: SimpleDiffViewer

Mermaid Sketch

https://plugins.jetbrains.com/plugin/20146-mermaid

PlantUML Sketch

https://plugins.jetbrains.com/plugin/7017-plantuml-integration

Error Handling (TBC)

  • Goto symbol: /goto
  • Compile output with HyperLink => AutoParse

Compile output:

Prepare for running goto-symbol.shire...
Shire Script: /Users/phodal/IdeaProjects/shire-demo/.shire/command/goto-symbol.shire
Shire Script Compile output:
/Users/phodal/IdeaProjects/shire-demo/src/main/java/com/phodal/shire/demo/controller/AdvertiseController.java

--------------------
Local command detected, running in local mode
Process finished with exit code 0
phodal added a commit that referenced this issue Dec 2, 2024
Add the ability to navigate to a specific line and column in a file using the `/goto` command. This feature includes the implementation of the GotoShireCommand class, updates to the ShireSyntaxAnalyzer to handle the new command, and documentation enhancements to reflect the addition of the `/goto` command to the Shire command set.
phodal added a commit that referenced this issue Dec 2, 2024
The changes enhance the GotoShireCommand by providing clearer navigation feedback in the form of a formatted string that includes the file name and line number. Additionally, the code has been cleaned up by removing unnecessary comments and simplifying the document offset calculation.
@OiAnthony
Copy link

Multiple file editing combined with Chat Panel might be a good idea.

phodal added a commit that referenced this issue Dec 5, 2024
…r enhanced code representation #153

Update CodeFence parsing to use "text" as the default language for plain text blocks. Additionally, optimize ShirePanelView by rearranging components and enhancing code block view to support specific languages. This results in a cleaner UI and more accurate code rendering.

```diff
-    CodeFence(findLanguage("markdown"), textBuilder.trim().toString(), true, "txt", true)
+    CodeFence(findLanguage("text"), textBuilder.trim().toString(), true, "txt", true)

// Other UI and code representation improvements...
```
phodal added a commit that referenced this issue Dec 8, 2024
- Introduce new action `ShireDiffCodeAction` for code diffing in the toolbar.
- Add corresponding XML configuration and Kotlin class.
@phodal phodal changed the title Multi-file edits Shire Skecth: A Multi-file viewer, render and edit Dec 8, 2024
phodal added a commit that referenced this issue Dec 8, 2024
- Renamed CodeBlockView to CodeBlockViewer and moved to new package.
- Added SketchViewer interface for viewer components.
- Updated references and method names to align with new class structure.
phodal added a commit that referenced this issue Dec 8, 2024
- Implement `DiffPatchViewer` for displaying diffs.
- Add `ShireViewDiffAction` and `ShireRejectDiffAction` to diff toolbar.
- Rename `ShireDiffCodeAction` to `ShireAcceptDiffAction`.
- Update XML configuration for new toolbar actions.
- Modify `CodeBlockViewer` to include `getComponent` method.
- Refactor `fullWidth` and `fullHeight` methods to `SketchViewer` interface.
phodal added a commit that referenced this issue Dec 9, 2024
Removed XML-defined actions for diff view toolbar and replaced them with inline JButton components in DiffPatchViewer.kt. This change simplifies the UI code and enhances maintainability.
phodal added a commit that referenced this issue Dec 9, 2024
#153

- Add project and patch content parameters to DiffPatchViewer.
- Implement patch parsing and error handling.
- Integrate diff viewing using IntelliJ's DiffManager.
- Localize button labels and tooltips.
phodal added a commit that referenced this issue Dec 9, 2024
#153

- Add project and patch content parameters to DiffPatchViewer.
- Implement patch parsing and error handling.
- Integrate diff viewing using IntelliJ's DiffManager.
- Localize button labels and tooltips.
phodal added a commit that referenced this issue Dec 9, 2024
- Add support for applying patches using ApplyPatchDefaultExecutor.
- Introduce file icon display and improve mouse event handling.
- Remove deprecated code and unused methods.
phodal added a commit that referenced this issue Dec 9, 2024
…mponents #153

Renamed and updated the following:
- `CodeBlockViewer` to `CodeBlockLang`
- `DiffPatchViewer` to `DiffLangSketch`
- `SketchViewer` interface to `LangSketch`
- Modified related components and references accordingly.

This refactor aims to harmonize naming conventions within the core module and maintain consistency with language-specific viewer components.
phodal added a commit that referenced this issue Dec 9, 2024
- Rename `CodeBlockLang` to `CodeHighlightSketch` and update its implementation.
- Modify `DiffLangSketch` to handle diff display and actions.
- Update `LangSketch` interface with new methods.
- Change `ShirePanelView` to use `LangSketch` and handle diff code blocks.
phodal added a commit that referenced this issue Dec 9, 2024
#153

Update the SingleFileDiffLangSketch to include additional functionalities such as accepting and rejecting patches, and viewing diffs through a new dialog. The commit introduces new imports, refines existing methods, and adds a rollback action with a tooltip for reversing changes. It also modifies the resource bundle to include new messages for the added actions.
phodal added a commit that referenced this issue Dec 9, 2024
This commit cleans up the codebase by removing the unused `MyApplyPatchFromClipboardDialog` class and its companion object, along with the `ShireDiffContext` class and its related methods. These removals reduce the code size and improve maintainability by eliminating unnecessary
phodal added a commit that referenced this issue Dec 9, 2024
…e SingleFileDiffLangSketch #153

Add a new dialog class `MyApplyPatchFromClipboardDialog` to handle the application of patches from the clipboard. This includes a custom checkbox for on-the-fly analysis option.

Update `SingleFileDiffLangSketch` by:
- Refactoring code for better readability.
- Implementing progress indicator for rollback action.
- Enhancing the rollback functionality to handle exceptions.
- Changing the mouse event behavior for a better UI experience.
phodal added a commit that referenced this issue Dec 9, 2024
The commit updates the `SingleFileDiffLangSketch` by replacing the complex rollback logic with a simplerUndoManager API. It also enhances the UI by improving the filepath display and enabling the rollback button based on the availability of the undo action.
phodal added a commit that referenced this issue Dec 10, 2024
Improve the UI by implementing the LangSketch interface and integrating PlantUML support. This includes:

- Enhancing the SingleFileDiffView class to implement LangSketch.
- Introducing LanguageSketchProvider for dynamic language sketch provision.
- Adding a PlantUmlSketchProvider and PlantUmlSketch class for PlantUML file rendering within the IDE.
phodal added a commit that referenced this issue Dec 10, 2024
#153

Update build script and plugin configuration to include new toolsets for PlantUML and Mermaid diagrams, enhancing the visual representation capabilities within the IDE.
phodal added a commit that referenced this issue Dec 10, 2024
- Replace mainPanel initialization with JPanel.
- Integrate TextEditor and PlantUmlSplitEditor for better preview handling.
- Simplify isSupported method to always return true.
- Remove unnecessary UI components and streamline the initialization process.
phodal added a commit that referenced this issue Dec 10, 2024


- Added `doneUpdateText` method to `LangSketch` and `PlantUmlSketchProvider`.
- Enhanced `ShirePanelView` to dispose old components properly and conditionally update text.
- Improved initialization in `PlantUmlSketchProvider` and handled preview settings.
phodal added a commit that referenced this issue Dec 10, 2024
…#153

- Updated MermaidSketchProvider and PlantUmlSketchProvider to use ExtensionLangSketch.
- Modified ShirePanelView to handle ExtensionLangSketch.
- Added ExtensionLangSketch interface to LanguageSketchProvider.
phodal added a commit that referenced this issue Dec 10, 2024
…153

- Refactor `setupActionBar` to accept `project` and `editor` parameters.
- Add Mermaid diagram support in `ShireMarketplaceTableView`.
- Update `MermaidSketchProvider` to handle Mermaid and MMD languages.
- Add Mermaid plugin dependency in `gradle-241.properties`.
- Extend `PlantUmlSketchProvider` to support specific UML file extensions.
phodal added a commit that referenced this issue Dec 10, 2024
- Add layout rows for Mermaid and PlantUML editors.
- Enhance language detection in ShireLanguageLabelAction.
phodal added a commit that referenced this issue Dec 10, 2024
- Refactor `DiffLangSketch` to extend `ExtensionLangSketch`.
- Implement `getExtensionName` method in `DiffLangSketch`.
- Add new `DiffLangSketchProvider` to handle diff language sketches.
- Register `DiffLangSketchProvider` in `com.phodal.shirecore.xml`.
- Simplify `ShirePanelView` logic for handling different language sketches.
phodal added a commit that referenced this issue Dec 10, 2024
- Simplified method return statements using expression body.
- Renamed 'filepath' to 'virtualFile' for clarity and consistency.
- Added mouse event handling for file label.
- Imported 'readText' extension method for VirtualFile.
phodal added a commit that referenced this issue Dec 10, 2024
- Removed LanguageSketchProvider usage from ShireMarketplaceTableView.
- Enhanced SingleFileDiffView with mouseEntered event to change opacity.
- Improved ShirePanelView layout by adding margin and reorganizing components.
phodal added a commit that referenced this issue Dec 10, 2024
…153

- Modify various LangSketch implementations to include origin language in updateLanguage method.
- Update CodeHighlightSketch to handle textLanguage.
- Extend DiffLangSketch to support patch files and improve diff handling.
- Adjust LangSketch interface and related providers for consistent language updates.
phodal added a commit that referenced this issue Dec 10, 2024
- Add support for a preview dialog in the diff viewer.
- Import necessary classes and modify the initialization logic.
- Integrate `FileEditorProvider` and `DialogWrapper` to display diff content.
phodal added a commit that referenced this issue Dec 10, 2024
Renames and reorganizes files and packages from `com.phodal.shirecore.ui` to `com.phodal.shirecore.sketch` to better reflect their purpose and improve code organization. This includes renaming several Kotlin files and updating corresponding package declarations and imports.
phodal added a commit that referenced this issue Dec 11, 2024
Updated UI component styling and layout to enhance consistency and readability. Modifications include adjusting borders, backgrounds, and alignment for various panels and labels within the code highlighting and diff views.
phodal added a commit that referenced this issue Dec 11, 2024
…leView #153

Adds the functionality to display patch content and associated action buttons within the ShireMarketplaceTableView. This includes a view for the patch content and the implementation of action buttons for file diff operations, such as rollback, enhancing the user interface for managing code patches.
phodal added a commit that referenced this issue Dec 11, 2024
Remove redundant color updates for actions in SingleFileDiffView. This change enhances the visual clarity by simplifying the color change logic when the mouse enters or exits the diff view. Only the foreground and file panel background colors are updated, improving performance and readability.
phodal added a commit that referenced this issue Dec 11, 2024
… methods #153

Deleted unnecessary diff action files and streamlined the `createSketch` methods within various sketch providers by removing redundant code and simplifying the function signatures. This change enhances code readability and maintainability.
phodal added a commit that referenced this issue Dec 11, 2024
This commit introduces a new StreamDiff class and its corresponding test suite. StreamDiff is capable of comparing two streams of text lines and emitting diff lines (New, Old, or Same) to represent the differences. The test suite ensures that the functionality handles various scenarios, including no match found, perfect matches, and matches with slight variations, including indentation differences.
phodal added a commit that referenced this issue Dec 11, 2024
…g prefix #153

This commit introduces an additional test case in `CodeFenceTest.kt` to verify that the `CodeFence.parse` method correctly handles the parsing of an incomplete code block when a language prefix (e.g., `java`) is provided. The test ensures that the parser identifies the code block as incomplete and does not mistake it for a complete block.
phodal added a commit that referenced this issue Dec 11, 2024
#153

Avoid including unnecessary new line characters when constructing CodeFence objects with empty code content. This ensures that the content remains clean and as expected.
phodal added a commit that referenced this issue Dec 11, 2024
- Replaced AssertJ with JUnit Assert for consistency.
- Simplified test cases for clarity.
- Implemented LCS-based diff algorithm for improved accuracy.
- Removed redundant matchLine function and MatchResult class.
- Updated tests to cover new edge cases.
phodal added a commit that referenced this issue Dec 11, 2024
#153

- Refactor `StreamDiffTest.kt` and `DiffStreamHandler.kt` for better flow handling.
- Add `toDiffLineType()` method to `DiffLine` class in `StreamDiff.kt` for type conversion.
- Ensure `lastLineNo` update is correctly placed in `DiffStreamHandler.kt`.
- Enhance progress highlighter update logic.
phodal added a commit that referenced this issue Dec 11, 2024
Update the logic for selecting new and old lines in DiffStreamHandler to ensure correct sublists are created based on line numbers.
phodal added a commit that referenced this issue Dec 11, 2024
Added Apache License 2.0 headers to core diff module files to ensure compliance with licensing requirements.
phodal added a commit that referenced this issue Dec 12, 2024
Remove the DiffLineType enum and directly use DiffLine sealed class in related functions to streamline diff handling logic.
phodal added a commit that referenced this issue Dec 12, 2024
…abels #153

- Simplified button creation by directly specifying labels and colors.
- Removed OS-specific key label functions and enum.
- Updated button foreground color to use Gray utility class.
phodal added a commit that referenced this issue Dec 12, 2024
- Added a new project service `DiffStreamService` to the IntelliJ plugin extensions in `com.phodal.shirecore.xml`.
phodal added a commit that referenced this issue Dec 12, 2024
Refactors the diff handling logic in `DiffStreamHandler.kt` by extracting the `when` block into a new function `updateByDiffType` for better readability and simplifies conditional checks using single-line returns.
phodal added a commit that referenced this issue Dec 12, 2024
- Introduce new StreamDiff interaction type for real-time diff streaming.
- Update button labels using ShireCoreBundle for localization.
- Refactor task creation and handling in EditorInteractionProvider.
- Add new documentation for Shire Sketch and update language spec order.
- Enhance DiffStreamHandler to support response handling.
@phodal phodal closed this as completed Dec 12, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants