merge: 解决冲突
This commit is contained in:
commit
4506b0c310
6
.gitignore
vendored
6
.gitignore
vendored
@ -4,10 +4,7 @@ target/
|
||||
!**/src/test/**/target/
|
||||
|
||||
### IntelliJ IDEA ###
|
||||
.idea/modules.xml
|
||||
.idea/jarRepositories.xml
|
||||
.idea/compiler.xml
|
||||
.idea/libraries/
|
||||
.idea/
|
||||
*.iws
|
||||
*.iml
|
||||
*.ipr
|
||||
@ -38,3 +35,4 @@ build/
|
||||
.DS_Store
|
||||
/JNotepad/
|
||||
/src/main/JNotepad.java
|
||||
/.idea/
|
||||
|
||||
8
.idea/.gitignore
generated
vendored
8
.idea/.gitignore
generated
vendored
@ -1,8 +0,0 @@
|
||||
# 默认忽略的文件
|
||||
/shelf/
|
||||
/workspace.xml
|
||||
# 基于编辑器的 HTTP 客户端请求
|
||||
/httpRequests/
|
||||
# Datasource local storage ignored files
|
||||
/dataSources/
|
||||
/dataSources.local.xml
|
||||
13
.idea/encodings.xml
generated
13
.idea/encodings.xml
generated
@ -1,13 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="Encoding">
|
||||
<file url="file://$PROJECT_DIR$/11.txt" charset="GBK" />
|
||||
<file url="file://$PROJECT_DIR$/aaa.txt" charset="GBK" />
|
||||
<file url="file://$PROJECT_DIR$/init.bat" charset="US-ASCII" />
|
||||
<file url="file://$PROJECT_DIR$/spi/src/main/java" charset="UTF-8" />
|
||||
<file url="file://$PROJECT_DIR$/spi/src/main/resources" charset="UTF-8" />
|
||||
<file url="file://$PROJECT_DIR$/src/main/java" charset="UTF-8" />
|
||||
<file url="file://$PROJECT_DIR$/src/main/resources" charset="UTF-8" />
|
||||
<file url="file://$PROJECT_DIR$/新建文本.txt" charset="GBK" />
|
||||
</component>
|
||||
</project>
|
||||
68
.idea/inspectionProfiles/Project_Default.xml
generated
68
.idea/inspectionProfiles/Project_Default.xml
generated
@ -1,68 +0,0 @@
|
||||
<component name="InspectionProjectProfileManager">
|
||||
<profile version="1.0">
|
||||
<option name="myName" value="Project Default" />
|
||||
<inspection_tool class="AliAccessStaticViaInstance" enabled="true" level="WARNING" enabled_by_default="true" />
|
||||
<inspection_tool class="AliArrayNamingShouldHaveBracket" enabled="true" level="WARNING" enabled_by_default="true" />
|
||||
<inspection_tool class="AliControlFlowStatementWithoutBraces" enabled="true" level="WARNING" enabled_by_default="true" />
|
||||
<inspection_tool class="AliDeprecation" enabled="true" level="WARNING" enabled_by_default="true" />
|
||||
<inspection_tool class="AliEqualsAvoidNull" enabled="true" level="WARNING" enabled_by_default="true" />
|
||||
<inspection_tool class="AliLongLiteralsEndingWithLowercaseL" enabled="true" level="WARNING" enabled_by_default="true" />
|
||||
<inspection_tool class="AliMissingOverrideAnnotation" enabled="true" level="WARNING" enabled_by_default="true" />
|
||||
<inspection_tool class="AliWrapperTypeEquality" enabled="true" level="WARNING" enabled_by_default="true" />
|
||||
<inspection_tool class="AlibabaAbstractClassShouldStartWithAbstractNaming" enabled="true" level="WARNING" enabled_by_default="true" />
|
||||
<inspection_tool class="AlibabaAbstractMethodOrInterfaceMethodMustUseJavadoc" enabled="true" level="WARNING" enabled_by_default="true" />
|
||||
<inspection_tool class="AlibabaAvoidApacheBeanUtilsCopy" enabled="true" level="WARNING" enabled_by_default="true" />
|
||||
<inspection_tool class="AlibabaAvoidCallStaticSimpleDateFormat" enabled="true" level="WARNING" enabled_by_default="true" />
|
||||
<inspection_tool class="AlibabaAvoidCommentBehindStatement" enabled="true" level="WARNING" enabled_by_default="true" />
|
||||
<inspection_tool class="AlibabaAvoidComplexCondition" enabled="true" level="WARNING" enabled_by_default="true" />
|
||||
<inspection_tool class="AlibabaAvoidConcurrentCompetitionRandom" enabled="true" level="WARNING" enabled_by_default="true" />
|
||||
<inspection_tool class="AlibabaAvoidDoubleOrFloatEqualCompare" enabled="true" level="WARNING" enabled_by_default="true" />
|
||||
<inspection_tool class="AlibabaAvoidManuallyCreateThread" enabled="true" level="WARNING" enabled_by_default="true" />
|
||||
<inspection_tool class="AlibabaAvoidMissUseOfMathRandom" enabled="true" level="WARNING" enabled_by_default="true" />
|
||||
<inspection_tool class="AlibabaAvoidNegationOperator" enabled="true" level="WARNING" enabled_by_default="true" />
|
||||
<inspection_tool class="AlibabaAvoidNewDateGetTime" enabled="true" level="WARNING" enabled_by_default="true" />
|
||||
<inspection_tool class="AlibabaAvoidPatternCompileInMethod" enabled="true" level="WARNING" enabled_by_default="true" />
|
||||
<inspection_tool class="AlibabaAvoidReturnInFinally" enabled="true" level="WARNING" enabled_by_default="true" />
|
||||
<inspection_tool class="AlibabaAvoidStartWithDollarAndUnderLineNaming" enabled="true" level="WARNING" enabled_by_default="true" />
|
||||
<inspection_tool class="AlibabaAvoidUseTimer" enabled="true" level="WARNING" enabled_by_default="true" />
|
||||
<inspection_tool class="AlibabaBigDecimalAvoidDoubleConstructor" enabled="true" level="WARNING" enabled_by_default="true" />
|
||||
<inspection_tool class="AlibabaBooleanPropertyShouldNotStartWithIs" enabled="true" level="WARNING" enabled_by_default="true" />
|
||||
<inspection_tool class="AlibabaClassCastExceptionWithSubListToArrayList" enabled="true" level="WARNING" enabled_by_default="true" />
|
||||
<inspection_tool class="AlibabaClassCastExceptionWithToArray" enabled="true" level="WARNING" enabled_by_default="true" />
|
||||
<inspection_tool class="AlibabaClassMustHaveAuthor" enabled="true" level="WARNING" enabled_by_default="true" />
|
||||
<inspection_tool class="AlibabaClassNamingShouldBeCamel" enabled="true" level="WARNING" enabled_by_default="true" />
|
||||
<inspection_tool class="AlibabaCollectionInitShouldAssignCapacity" enabled="true" level="WARNING" enabled_by_default="true" />
|
||||
<inspection_tool class="AlibabaCommentsMustBeJavadocFormat" enabled="true" level="WARNING" enabled_by_default="true" />
|
||||
<inspection_tool class="AlibabaConcurrentExceptionWithModifyOriginSubList" enabled="true" level="WARNING" enabled_by_default="true" />
|
||||
<inspection_tool class="AlibabaConstantFieldShouldBeUpperCase" enabled="true" level="WARNING" enabled_by_default="true" />
|
||||
<inspection_tool class="AlibabaCountDownShouldInFinally" enabled="true" level="WARNING" enabled_by_default="true" />
|
||||
<inspection_tool class="AlibabaDontModifyInForeachCircle" enabled="true" level="WARNING" enabled_by_default="true" />
|
||||
<inspection_tool class="AlibabaEnumConstantsMustHaveComment" enabled="true" level="WARNING" enabled_by_default="true" />
|
||||
<inspection_tool class="AlibabaExceptionClassShouldEndWithException" enabled="true" level="WARNING" enabled_by_default="true" />
|
||||
<inspection_tool class="AlibabaIbatisMethodQueryForList" enabled="true" level="WARNING" enabled_by_default="true" />
|
||||
<inspection_tool class="AlibabaLockShouldWithTryFinally" enabled="true" level="WARNING" enabled_by_default="true" />
|
||||
<inspection_tool class="AlibabaLowerCamelCaseVariableNaming" enabled="true" level="WARNING" enabled_by_default="true" />
|
||||
<inspection_tool class="AlibabaMethodReturnWrapperType" enabled="true" level="WARNING" enabled_by_default="true" />
|
||||
<inspection_tool class="AlibabaMethodTooLong" enabled="true" level="WARNING" enabled_by_default="true" />
|
||||
<inspection_tool class="AlibabaPackageNaming" enabled="true" level="WARNING" enabled_by_default="true" />
|
||||
<inspection_tool class="AlibabaPojoMustOverrideToString" enabled="true" level="WARNING" enabled_by_default="true" />
|
||||
<inspection_tool class="AlibabaPojoMustUsePrimitiveField" enabled="true" level="WARNING" enabled_by_default="true" />
|
||||
<inspection_tool class="AlibabaPojoNoDefaultValue" enabled="true" level="WARNING" enabled_by_default="true" />
|
||||
<inspection_tool class="AlibabaRemoveCommentedCode" enabled="true" level="WARNING" enabled_by_default="true" />
|
||||
<inspection_tool class="AlibabaServiceOrDaoClassShouldEndWithImpl" enabled="true" level="WARNING" enabled_by_default="true" />
|
||||
<inspection_tool class="AlibabaSneakyThrowsWithoutExceptionType" enabled="true" level="WARNING" enabled_by_default="true" />
|
||||
<inspection_tool class="AlibabaStringConcat" enabled="true" level="WARNING" enabled_by_default="true" />
|
||||
<inspection_tool class="AlibabaSwitchExpression" enabled="true" level="WARNING" enabled_by_default="true" />
|
||||
<inspection_tool class="AlibabaSwitchStatement" enabled="true" level="WARNING" enabled_by_default="true" />
|
||||
<inspection_tool class="AlibabaTestClassShouldEndWithTestNaming" enabled="true" level="WARNING" enabled_by_default="true" />
|
||||
<inspection_tool class="AlibabaThreadLocalShouldRemove" enabled="true" level="WARNING" enabled_by_default="true" />
|
||||
<inspection_tool class="AlibabaThreadPoolCreation" enabled="true" level="WARNING" enabled_by_default="true" />
|
||||
<inspection_tool class="AlibabaThreadShouldSetName" enabled="true" level="WARNING" enabled_by_default="true" />
|
||||
<inspection_tool class="AlibabaTransactionMustHaveRollback" enabled="true" level="WARNING" enabled_by_default="true" />
|
||||
<inspection_tool class="AlibabaUndefineMagicConstant" enabled="true" level="WARNING" enabled_by_default="true" />
|
||||
<inspection_tool class="AlibabaUnsupportedExceptionWithModifyAsList" enabled="true" level="WARNING" enabled_by_default="true" />
|
||||
<inspection_tool class="AlibabaUseQuietReferenceNotation" enabled="true" level="WARNING" enabled_by_default="true" />
|
||||
<inspection_tool class="AlibabaUseRightCaseForDateFormat" enabled="true" level="WARNING" enabled_by_default="true" />
|
||||
<inspection_tool class="MapOrSetKeyShouldOverrideHashCodeEquals" enabled="true" level="WARNING" enabled_by_default="true" />
|
||||
</profile>
|
||||
</component>
|
||||
20
.idea/misc.xml
generated
20
.idea/misc.xml
generated
@ -1,20 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ExternalStorageConfigurationManager" enabled="true" />
|
||||
<component name="MavenProjectsManager">
|
||||
<option name="originalFiles">
|
||||
<list>
|
||||
<option value="$PROJECT_DIR$/pom.xml" />
|
||||
<option value="$PROJECT_DIR$/spi/pom.xml" />
|
||||
</list>
|
||||
</option>
|
||||
<option name="ignoredFiles">
|
||||
<set>
|
||||
<option value="$PROJECT_DIR$/spi/pom.xml" />
|
||||
</set>
|
||||
</option>
|
||||
</component>
|
||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_17" default="true" project-jdk-name="17" project-jdk-type="JavaSDK">
|
||||
<output url="file://$PROJECT_DIR$/out" />
|
||||
</component>
|
||||
</project>
|
||||
124
.idea/uiDesigner.xml
generated
124
.idea/uiDesigner.xml
generated
@ -1,124 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="Palette2">
|
||||
<group name="Swing">
|
||||
<item class="com.intellij.uiDesigner.HSpacer" tooltip-text="Horizontal Spacer" icon="/com/intellij/uiDesigner/icons/hspacer.svg" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="1" hsize-policy="6" anchor="0" fill="1" />
|
||||
</item>
|
||||
<item class="com.intellij.uiDesigner.VSpacer" tooltip-text="Vertical Spacer" icon="/com/intellij/uiDesigner/icons/vspacer.svg" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="6" hsize-policy="1" anchor="0" fill="2" />
|
||||
</item>
|
||||
<item class="javax.swing.JPanel" icon="/com/intellij/uiDesigner/icons/panel.svg" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3" />
|
||||
</item>
|
||||
<item class="javax.swing.JScrollPane" icon="/com/intellij/uiDesigner/icons/scrollPane.svg" removable="false" auto-create-binding="false" can-attach-label="true">
|
||||
<default-constraints vsize-policy="7" hsize-policy="7" anchor="0" fill="3" />
|
||||
</item>
|
||||
<item class="javax.swing.JButton" icon="/com/intellij/uiDesigner/icons/button.svg" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="3" anchor="0" fill="1" />
|
||||
<initial-values>
|
||||
<property name="text" value="Button" />
|
||||
</initial-values>
|
||||
</item>
|
||||
<item class="javax.swing.JRadioButton" icon="/com/intellij/uiDesigner/icons/radioButton.svg" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
|
||||
<initial-values>
|
||||
<property name="text" value="RadioButton" />
|
||||
</initial-values>
|
||||
</item>
|
||||
<item class="javax.swing.JCheckBox" icon="/com/intellij/uiDesigner/icons/checkBox.svg" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
|
||||
<initial-values>
|
||||
<property name="text" value="CheckBox" />
|
||||
</initial-values>
|
||||
</item>
|
||||
<item class="javax.swing.JLabel" icon="/com/intellij/uiDesigner/icons/label.svg" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="0" anchor="8" fill="0" />
|
||||
<initial-values>
|
||||
<property name="text" value="Label" />
|
||||
</initial-values>
|
||||
</item>
|
||||
<item class="javax.swing.JTextField" icon="/com/intellij/uiDesigner/icons/textField.svg" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
|
||||
<preferred-size width="150" height="-1" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JPasswordField" icon="/com/intellij/uiDesigner/icons/passwordField.svg" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
|
||||
<preferred-size width="150" height="-1" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JFormattedTextField" icon="/com/intellij/uiDesigner/icons/formattedTextField.svg" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
|
||||
<preferred-size width="150" height="-1" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JTextArea" icon="/com/intellij/uiDesigner/icons/textArea.svg" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
||||
<preferred-size width="150" height="50" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JTextPane" icon="/com/intellij/uiDesigner/icons/textPane.svg" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
||||
<preferred-size width="150" height="50" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JEditorPane" icon="/com/intellij/uiDesigner/icons/editorPane.svg" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
||||
<preferred-size width="150" height="50" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JComboBox" icon="/com/intellij/uiDesigner/icons/comboBox.svg" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="0" hsize-policy="2" anchor="8" fill="1" />
|
||||
</item>
|
||||
<item class="javax.swing.JTable" icon="/com/intellij/uiDesigner/icons/table.svg" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
||||
<preferred-size width="150" height="50" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JList" icon="/com/intellij/uiDesigner/icons/list.svg" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="6" hsize-policy="2" anchor="0" fill="3">
|
||||
<preferred-size width="150" height="50" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JTree" icon="/com/intellij/uiDesigner/icons/tree.svg" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
||||
<preferred-size width="150" height="50" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JTabbedPane" icon="/com/intellij/uiDesigner/icons/tabbedPane.svg" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
|
||||
<preferred-size width="200" height="200" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JSplitPane" icon="/com/intellij/uiDesigner/icons/splitPane.svg" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
|
||||
<preferred-size width="200" height="200" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JSpinner" icon="/com/intellij/uiDesigner/icons/spinner.svg" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
|
||||
</item>
|
||||
<item class="javax.swing.JSlider" icon="/com/intellij/uiDesigner/icons/slider.svg" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
|
||||
</item>
|
||||
<item class="javax.swing.JSeparator" icon="/com/intellij/uiDesigner/icons/separator.svg" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3" />
|
||||
</item>
|
||||
<item class="javax.swing.JProgressBar" icon="/com/intellij/uiDesigner/icons/progressbar.svg" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1" />
|
||||
</item>
|
||||
<item class="javax.swing.JToolBar" icon="/com/intellij/uiDesigner/icons/toolbar.svg" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1">
|
||||
<preferred-size width="-1" height="20" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JToolBar$Separator" icon="/com/intellij/uiDesigner/icons/toolbarSeparator.svg" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="0" anchor="0" fill="1" />
|
||||
</item>
|
||||
<item class="javax.swing.JScrollBar" icon="/com/intellij/uiDesigner/icons/scrollbar.svg" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="6" hsize-policy="0" anchor="0" fill="2" />
|
||||
</item>
|
||||
</group>
|
||||
</component>
|
||||
</project>
|
||||
6
.idea/vcs.xml
generated
6
.idea/vcs.xml
generated
@ -1,6 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="VcsDirectoryMappings">
|
||||
<mapping directory="$PROJECT_DIR$" vcs="Git" />
|
||||
</component>
|
||||
</project>
|
||||
@ -11,4 +11,5 @@ module org.jcnc.jnotepad {
|
||||
exports org.jcnc.jnotepad.view.init;
|
||||
exports org.jcnc.jnotepad.view.manager;
|
||||
exports org.jcnc.jnotepad.constants;
|
||||
exports org.jcnc.jnotepad.ui;
|
||||
}
|
||||
@ -2,7 +2,7 @@ package org.jcnc.jnotepad.Interface;
|
||||
|
||||
import javafx.event.ActionEvent;
|
||||
import javafx.event.EventHandler;
|
||||
import javafx.scene.control.TextArea;
|
||||
import org.jcnc.jnotepad.ui.LineNumberTextArea;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.List;
|
||||
@ -18,7 +18,7 @@ public interface ControllerInterface {
|
||||
* @param rawParameters 原始参数列表
|
||||
* @return 创建的 TextArea
|
||||
*/
|
||||
TextArea openAssociatedFileAndCreateTextArea(List<String> rawParameters);
|
||||
LineNumberTextArea openAssociatedFileAndCreateTextArea(List<String> rawParameters);
|
||||
|
||||
/**
|
||||
* 获取换行符处理事件处理程序
|
||||
@ -26,7 +26,7 @@ public interface ControllerInterface {
|
||||
* @param textArea 文本区域
|
||||
* @return 换行符处理事件处理程序
|
||||
*/
|
||||
EventHandler<ActionEvent> getLineFeedEventHandler(TextArea textArea);
|
||||
EventHandler<ActionEvent> getLineFeedEventHandler(LineNumberTextArea textArea);
|
||||
|
||||
/**
|
||||
* 获取新建文件处理事件处理程序
|
||||
@ -34,7 +34,7 @@ public interface ControllerInterface {
|
||||
* @param textArea 文本区域
|
||||
* @return 新建文件处理事件处理程序
|
||||
*/
|
||||
EventHandler<ActionEvent> getNewFileEventHandler(TextArea textArea);
|
||||
EventHandler<ActionEvent> getNewFileEventHandler(LineNumberTextArea textArea);
|
||||
|
||||
/**
|
||||
* 获取打开文件处理事件处理程序
|
||||
@ -56,14 +56,14 @@ public interface ControllerInterface {
|
||||
*
|
||||
* @param textArea 文本区域
|
||||
*/
|
||||
void autoSave(TextArea textArea);
|
||||
void autoSave(LineNumberTextArea textArea);
|
||||
|
||||
/**
|
||||
* 更新状态标签
|
||||
*
|
||||
* @param textArea 文本区域
|
||||
*/
|
||||
void updateStatusLabel(TextArea textArea);
|
||||
void updateStatusLabel(LineNumberTextArea textArea);
|
||||
|
||||
/**
|
||||
* 打开关联文件
|
||||
@ -109,5 +109,5 @@ public interface ControllerInterface {
|
||||
*/
|
||||
void initTabPane();
|
||||
|
||||
void updateUIWithNewTextArea(TextArea textArea);
|
||||
void updateUIWithNewTextArea(LineNumberTextArea textArea);
|
||||
}
|
||||
|
||||
@ -4,13 +4,13 @@ import atlantafx.base.theme.PrimerLight;
|
||||
import javafx.application.Application;
|
||||
import javafx.application.Platform;
|
||||
import javafx.scene.Scene;
|
||||
import javafx.scene.control.Tab;
|
||||
import javafx.scene.control.TextArea;
|
||||
|
||||
import javafx.scene.image.Image;
|
||||
import javafx.scene.layout.Pane;
|
||||
import javafx.stage.Stage;
|
||||
import org.jcnc.jnotepad.constants.Constants;
|
||||
import org.jcnc.jnotepad.controller.manager.Controller;
|
||||
import org.jcnc.jnotepad.ui.LineNumberTextArea;
|
||||
import org.jcnc.jnotepad.view.init.View;
|
||||
import org.jcnc.jnotepad.view.manager.ViewManager;
|
||||
|
||||
@ -24,7 +24,7 @@ public class LunchApp extends Application {
|
||||
public static boolean isRelevance = true;
|
||||
|
||||
Controller controller = Controller.getInstance();
|
||||
|
||||
Scene scene;
|
||||
View view;
|
||||
|
||||
@Override
|
||||
@ -34,19 +34,20 @@ public class LunchApp extends Application {
|
||||
|
||||
Pane root = new Pane();
|
||||
|
||||
|
||||
double width = Constants.SCREEN_WIDTH;
|
||||
double length = Constants.SCREEN_LENGTH;
|
||||
String name = Constants.APP_NAME;
|
||||
String icon = Constants.APP_ICON;
|
||||
|
||||
Scene scene = new Scene(root, width, length);
|
||||
|
||||
scene = new Scene(root, width, length);
|
||||
Application.setUserAgentStylesheet(new PrimerLight().getUserAgentStylesheet());
|
||||
|
||||
primaryStage.setTitle(name);
|
||||
primaryStage.setWidth(width);
|
||||
primaryStage.setHeight(length);
|
||||
primaryStage.setScene(scene);
|
||||
|
||||
primaryStage.getIcons().add(new Image(Objects.requireNonNull(getClass().getResource(icon)).toString()));
|
||||
primaryStage.show();
|
||||
ViewManager viewManager = ViewManager.getInstance(scene);
|
||||
@ -58,15 +59,17 @@ public class LunchApp extends Application {
|
||||
view.initShortcutKey();
|
||||
|
||||
if (isRelevance) {
|
||||
|
||||
// 使用线程池加载关联文件并创建文本区域
|
||||
List<String> rawParameters = getParameters().getRaw();
|
||||
threadPool.execute(() -> {
|
||||
TextArea textArea = controller.openAssociatedFileAndCreateTextArea(rawParameters);
|
||||
LineNumberTextArea textArea = controller.openAssociatedFileAndCreateTextArea(rawParameters);
|
||||
if (!Objects.isNull(textArea)) {
|
||||
Platform.runLater(() -> controller.updateUIWithNewTextArea(textArea));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -2,7 +2,7 @@ package org.jcnc.jnotepad.controller.event.handler;
|
||||
|
||||
import javafx.event.ActionEvent;
|
||||
import javafx.event.EventHandler;
|
||||
import javafx.scene.control.TextArea;
|
||||
import org.jcnc.jnotepad.ui.LineNumberTextArea;
|
||||
|
||||
/**
|
||||
* 换行程序。
|
||||
@ -10,13 +10,13 @@ import javafx.scene.control.TextArea;
|
||||
* 用于在文本区域中插入一个换行符。
|
||||
*/
|
||||
public class LineFeed implements EventHandler<ActionEvent> {
|
||||
private final TextArea textArea;
|
||||
private final LineNumberTextArea textArea;
|
||||
|
||||
/**
|
||||
* 构造函数,初始化 LineFeed 对象。
|
||||
* @param textArea 要操作的文本区域
|
||||
*/
|
||||
public LineFeed(TextArea textArea) {
|
||||
public LineFeed(LineNumberTextArea textArea) {
|
||||
this.textArea = textArea;
|
||||
}
|
||||
|
||||
@ -26,7 +26,7 @@ public class LineFeed implements EventHandler<ActionEvent> {
|
||||
*/
|
||||
@Override
|
||||
public void handle(ActionEvent event) {
|
||||
String text = textArea.getText();
|
||||
textArea.setText(text + "\n");
|
||||
String text = textArea.getMainTextArea().getText();
|
||||
textArea.getMainTextArea().setText(text + "\n");
|
||||
}
|
||||
}
|
||||
|
||||
@ -3,7 +3,7 @@ package org.jcnc.jnotepad.controller.event.handler;
|
||||
import javafx.event.ActionEvent;
|
||||
import javafx.event.EventHandler;
|
||||
import javafx.scene.control.Tab;
|
||||
import javafx.scene.control.TextArea;
|
||||
import org.jcnc.jnotepad.ui.LineNumberTextArea;
|
||||
import org.jcnc.jnotepad.controller.manager.Controller;
|
||||
import org.jcnc.jnotepad.view.manager.ViewManager;
|
||||
|
||||
@ -25,18 +25,24 @@ public class NewFile implements EventHandler<ActionEvent> {
|
||||
// 获取控制器
|
||||
Controller controller = Controller.getInstance();
|
||||
|
||||
LineNumberTextArea lineNumberTextArea = new LineNumberTextArea();
|
||||
|
||||
|
||||
// 创建一个新的文本编辑区
|
||||
TextArea textArea = new TextArea();
|
||||
LineNumberTextArea textArea = new LineNumberTextArea();
|
||||
|
||||
|
||||
textArea.setStyle(
|
||||
"-fx-border-color:white;" +
|
||||
"-fx-background-color:white"
|
||||
"-fx-border-color:white ;-fx-background-color:white;"
|
||||
);
|
||||
|
||||
//TODO: refactor:统一TextArea新建、绑定监听器入口
|
||||
// 增加autoSave监听器绑定
|
||||
controller.autoSave(textArea);
|
||||
|
||||
// 创建一个新的Tab页
|
||||
Tab tab = new Tab("新建文本 " + ++ViewManager.tabIndex);
|
||||
tab.setContent(textArea);
|
||||
tab.setContent(lineNumberTextArea.getMainTextArea());
|
||||
|
||||
// 将Tab页添加到TabPane中
|
||||
tabPane.getTabs().add(tab);
|
||||
@ -45,9 +51,9 @@ public class NewFile implements EventHandler<ActionEvent> {
|
||||
tabPane.getSelectionModel().select(tab);
|
||||
|
||||
// 更新状态标签
|
||||
controller.updateStatusLabel(textArea);
|
||||
controller.updateStatusLabel(lineNumberTextArea);
|
||||
|
||||
// 更新编码信息
|
||||
controller.upDateEncodingLabel(textArea.getText());
|
||||
controller.upDateEncodingLabel(lineNumberTextArea.getMainTextArea().getText());
|
||||
}
|
||||
}
|
||||
@ -3,8 +3,9 @@ package org.jcnc.jnotepad.controller.event.handler;
|
||||
import javafx.concurrent.Task;
|
||||
import javafx.event.ActionEvent;
|
||||
import javafx.event.EventHandler;
|
||||
import javafx.scene.control.TextArea;
|
||||
|
||||
import javafx.stage.FileChooser;
|
||||
import org.jcnc.jnotepad.ui.LineNumberTextArea;
|
||||
import org.jcnc.jnotepad.controller.manager.Controller;
|
||||
|
||||
import java.io.File;
|
||||
@ -38,7 +39,7 @@ public class OpenFile implements EventHandler<ActionEvent> {
|
||||
// 调用控制器的getText方法,读取文件内容
|
||||
controller.getText(file);
|
||||
// 更新编码标签
|
||||
controller.upDateEncodingLabel(((TextArea) tabPane.getSelectionModel().getSelectedItem().getContent()).getText());
|
||||
controller.upDateEncodingLabel(((LineNumberTextArea) tabPane.getSelectionModel().getSelectedItem().getContent()).getMainTextArea().getText());
|
||||
return null;
|
||||
}
|
||||
};
|
||||
|
||||
@ -3,9 +3,8 @@ package org.jcnc.jnotepad.controller.event.handler;
|
||||
import javafx.event.ActionEvent;
|
||||
import javafx.event.EventHandler;
|
||||
import javafx.scene.control.Tab;
|
||||
import javafx.scene.control.TextArea;
|
||||
import javafx.stage.FileChooser;
|
||||
import org.jcnc.jnotepad.controller.manager.Controller;
|
||||
import org.jcnc.jnotepad.ui.LineNumberTextArea;
|
||||
|
||||
import java.io.BufferedWriter;
|
||||
import java.io.File;
|
||||
@ -33,14 +32,14 @@ public class SaveAsFile implements EventHandler<ActionEvent> {
|
||||
Tab selectedTab = tabPane.getSelectionModel().getSelectedItem();
|
||||
if (selectedTab != null) {
|
||||
FileChooser fileChooser = new FileChooser();
|
||||
fileChooser.setInitialFileName("新建文本");
|
||||
fileChooser.setInitialFileName(selectedTab.getText());
|
||||
fileChooser.getExtensionFilters().add(new FileChooser.ExtensionFilter("文本文档", "*.txt"));
|
||||
File file = fileChooser.showSaveDialog(null);
|
||||
if (file != null) {
|
||||
try {
|
||||
BufferedWriter writer = new BufferedWriter(new FileWriter(file));
|
||||
TextArea textArea = (TextArea) selectedTab.getContent(); // 获取当前Tab页的文本编辑区
|
||||
String text = textArea.getText();
|
||||
LineNumberTextArea textArea = (LineNumberTextArea) selectedTab.getContent(); // 获取当前Tab页的文本编辑区
|
||||
String text = textArea.getMainTextArea().getText();
|
||||
writer.write(text); // 写入文件内容
|
||||
writer.flush();
|
||||
writer.close();
|
||||
|
||||
@ -5,10 +5,9 @@ import javafx.concurrent.Task;
|
||||
import javafx.event.ActionEvent;
|
||||
import javafx.event.EventHandler;
|
||||
import javafx.scene.control.Tab;
|
||||
import javafx.scene.control.TextArea;
|
||||
import javafx.scene.paint.Color;
|
||||
import javafx.scene.shape.Rectangle;
|
||||
|
||||
import org.jcnc.jnotepad.Interface.ControllerInterface;
|
||||
import org.jcnc.jnotepad.ui.LineNumberTextArea;
|
||||
import org.jcnc.jnotepad.LunchApp;
|
||||
import org.jcnc.jnotepad.controller.event.handler.LineFeed;
|
||||
import org.jcnc.jnotepad.controller.event.handler.NewFile;
|
||||
@ -43,13 +42,13 @@ public class Controller implements ControllerInterface {
|
||||
* @return 创建的文本区域
|
||||
*/
|
||||
@Override
|
||||
public TextArea openAssociatedFileAndCreateTextArea(List<String> rawParameters) {
|
||||
public LineNumberTextArea openAssociatedFileAndCreateTextArea(List<String> rawParameters) {
|
||||
if (!rawParameters.isEmpty()) {
|
||||
String filePath = rawParameters.get(0);
|
||||
openAssociatedFile(filePath);
|
||||
return null;
|
||||
} else {
|
||||
TextArea textArea = createNewTextArea();
|
||||
LineNumberTextArea textArea = createNewTextArea();
|
||||
configureTextArea(textArea);
|
||||
return textArea;
|
||||
}
|
||||
@ -62,7 +61,7 @@ public class Controller implements ControllerInterface {
|
||||
* @return 行分隔事件处理程序
|
||||
*/
|
||||
@Override
|
||||
public EventHandler<ActionEvent> getLineFeedEventHandler(TextArea textArea) {
|
||||
public EventHandler<ActionEvent> getLineFeedEventHandler(LineNumberTextArea textArea) {
|
||||
return new LineFeed(textArea);
|
||||
}
|
||||
|
||||
@ -73,7 +72,7 @@ public class Controller implements ControllerInterface {
|
||||
* @return 新建文件事件处理程序
|
||||
*/
|
||||
@Override
|
||||
public EventHandler<ActionEvent> getNewFileEventHandler(TextArea textArea) {
|
||||
public EventHandler<ActionEvent> getNewFileEventHandler(LineNumberTextArea textArea) {
|
||||
return new NewFile();
|
||||
}
|
||||
|
||||
@ -93,7 +92,7 @@ public class Controller implements ControllerInterface {
|
||||
* @param textArea 文本区域
|
||||
*/
|
||||
@Override
|
||||
public void autoSave(TextArea textArea) {
|
||||
public void autoSave(LineNumberTextArea textArea) {
|
||||
textArea.textProperty().addListener((observable, oldValue, newValue) -> {
|
||||
Tab tab = ViewManager.tabPane.getSelectionModel().getSelectedItem();
|
||||
if (tab != null) {
|
||||
@ -126,11 +125,11 @@ public class Controller implements ControllerInterface {
|
||||
* @param textArea 文本区域
|
||||
*/
|
||||
@Override
|
||||
public void updateStatusLabel(TextArea textArea) {
|
||||
int caretPosition = textArea.getCaretPosition();
|
||||
int row = getRow(caretPosition, textArea.getText());
|
||||
int column = getColumn(caretPosition, textArea.getText());
|
||||
int length = textArea.getLength();
|
||||
public void updateStatusLabel(LineNumberTextArea textArea) {
|
||||
int caretPosition = textArea.getMainTextArea().getCaretPosition();
|
||||
int row = getRow(caretPosition, textArea.getMainTextArea().getText());
|
||||
int column = getColumn(caretPosition, textArea.getMainTextArea().getText());
|
||||
int length = textArea.getMainTextArea().getLength();
|
||||
ViewManager.statusLabel.setText("行: " + row + " \t列: " + column + " \t字数: " + length);
|
||||
}
|
||||
|
||||
@ -155,7 +154,7 @@ public class Controller implements ControllerInterface {
|
||||
*/
|
||||
@Override
|
||||
public void getText(File file) {
|
||||
TextArea textArea = createNewTextArea();
|
||||
LineNumberTextArea textArea = createNewTextArea();
|
||||
try (BufferedReader reader = new BufferedReader(new FileReader(file))) {
|
||||
StringBuilder textBuilder = new StringBuilder();
|
||||
String line;
|
||||
@ -165,7 +164,7 @@ public class Controller implements ControllerInterface {
|
||||
String text = textBuilder.toString();
|
||||
|
||||
Platform.runLater(() -> {
|
||||
textArea.setText(text);
|
||||
textArea.getMainTextArea().setText(text);
|
||||
|
||||
Tab tab = createNewTab(file.getName(), textArea);
|
||||
tab.setUserData(file);
|
||||
@ -234,22 +233,22 @@ public class Controller implements ControllerInterface {
|
||||
ViewManager.tabPane.getSelectionModel().selectedItemProperty().addListener((observable, oldTab, newTab) -> {
|
||||
if (newTab != null) {
|
||||
// 获取新选定的标签页并关联的文本区域
|
||||
TextArea textArea = (TextArea) newTab.getContent();
|
||||
LineNumberTextArea textArea = (LineNumberTextArea) newTab.getContent();
|
||||
|
||||
// 更新状态标签
|
||||
controller.updateStatusLabel(textArea);
|
||||
|
||||
// 监听文本光标位置的变化,更新状态标签
|
||||
textArea.caretPositionProperty().addListener((caretObservable, oldPosition, newPosition) -> controller.updateStatusLabel(textArea));
|
||||
textArea.getMainTextArea().caretPositionProperty().addListener((caretObservable, oldPosition, newPosition) -> controller.updateStatusLabel(textArea));
|
||||
|
||||
// 更新编码标签
|
||||
controller.upDateEncodingLabel(textArea.getText());
|
||||
controller.upDateEncodingLabel(textArea.getMainTextArea().getText());
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateUIWithNewTextArea(TextArea textArea) {
|
||||
public void updateUIWithNewTextArea(LineNumberTextArea textArea) {
|
||||
Tab tab = new Tab("新建文件 " + (++ViewManager.tabIndex));
|
||||
tab.setContent(textArea);
|
||||
ViewManager.tabPane.getTabs().add(tab);
|
||||
@ -262,9 +261,9 @@ public class Controller implements ControllerInterface {
|
||||
*
|
||||
* @param textArea 文本区域
|
||||
*/
|
||||
private void configureTextArea(TextArea textArea) {
|
||||
textArea.setWrapText(true);
|
||||
upDateEncodingLabel(textArea.getText());
|
||||
private void configureTextArea(LineNumberTextArea textArea) {
|
||||
textArea.getMainTextArea().setWrapText(true);
|
||||
upDateEncodingLabel(textArea.getMainTextArea().getText());
|
||||
updateStatusLabel(textArea);
|
||||
|
||||
textArea.textProperty().addListener((observable, oldValue, newValue) -> updateStatusLabel(textArea));
|
||||
@ -277,8 +276,8 @@ public class Controller implements ControllerInterface {
|
||||
*
|
||||
* @return 新的文本区域
|
||||
*/
|
||||
private TextArea createNewTextArea() {
|
||||
TextArea textArea = new TextArea();
|
||||
private LineNumberTextArea createNewTextArea() {
|
||||
LineNumberTextArea textArea = new LineNumberTextArea();
|
||||
textArea.setStyle(
|
||||
"-fx-border-color:white;" +
|
||||
"-fx-background-color:white"
|
||||
@ -293,7 +292,7 @@ public class Controller implements ControllerInterface {
|
||||
* @param textArea 文本区域
|
||||
* @return 新的标签页
|
||||
*/
|
||||
private Tab createNewTab(String tabName, TextArea textArea) {
|
||||
private Tab createNewTab(String tabName, LineNumberTextArea textArea) {
|
||||
Tab tab = new Tab(tabName);
|
||||
tab.setContent(textArea);
|
||||
tab.setUserData(null);
|
||||
@ -307,12 +306,12 @@ public class Controller implements ControllerInterface {
|
||||
* @return 打开文件的任务
|
||||
*/
|
||||
private Task<Void> createOpenFileTask(File file) {
|
||||
TextArea textArea = createNewTextArea();
|
||||
LineNumberTextArea textArea = createNewTextArea();
|
||||
return new Task<>() {
|
||||
@Override
|
||||
protected Void call() {
|
||||
getText(file);
|
||||
upDateEncodingLabel(textArea.getText());
|
||||
upDateEncodingLabel(textArea.getMainTextArea().getText());
|
||||
return null;
|
||||
}
|
||||
};
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
package org.jcnc.jnotepad.tool;
|
||||
|
||||
import javafx.scene.control.TextArea;
|
||||
|
||||
import org.jcnc.jnotepad.ui.LineNumberTextArea;
|
||||
|
||||
import java.nio.charset.Charset;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
@ -16,8 +17,8 @@ public class EncodingDetector {
|
||||
* @param textArea 文本区域
|
||||
* @return 字符串表示的编码,如果检测失败则返回 "UNKNOWN"
|
||||
*/
|
||||
public static String detectEncoding(TextArea textArea) {
|
||||
String text = textArea.getText();
|
||||
public static String detectEncoding(LineNumberTextArea textArea) {
|
||||
String text = textArea.getMainTextArea().getText();
|
||||
|
||||
return detectEncoding(text);
|
||||
}
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
package org.jcnc.jnotepad.tool;
|
||||
|
||||
import java.io.*;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
|
||||
/**
|
||||
* @author 一个大转盘
|
||||
@ -18,7 +19,7 @@ public class FileUtil {
|
||||
String jsonStr = "";
|
||||
try {
|
||||
FileReader fileReader = new FileReader(jsonFile);
|
||||
Reader reader = new InputStreamReader(new FileInputStream(jsonFile),"utf-8");
|
||||
Reader reader = new InputStreamReader(new FileInputStream(jsonFile), StandardCharsets.UTF_8);
|
||||
int ch = 0;
|
||||
StringBuffer sb = new StringBuffer();
|
||||
while ((ch = reader.read()) != -1) {
|
||||
|
||||
70
src/main/java/org/jcnc/jnotepad/ui/LineNumberTextArea.java
Normal file
70
src/main/java/org/jcnc/jnotepad/ui/LineNumberTextArea.java
Normal file
@ -0,0 +1,70 @@
|
||||
package org.jcnc.jnotepad.ui;
|
||||
|
||||
import javafx.beans.property.StringProperty;
|
||||
|
||||
import javafx.scene.control.TextArea;
|
||||
import javafx.scene.layout.BorderPane;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
public class LineNumberTextArea extends BorderPane {
|
||||
|
||||
|
||||
private final TextArea mainTextArea;
|
||||
private final TextArea lineNumberArea;
|
||||
|
||||
public LineNumberTextArea() {
|
||||
mainTextArea = new TextArea();
|
||||
lineNumberArea = new TextArea();
|
||||
lineNumberArea.setEditable(false);
|
||||
lineNumberArea.setMinWidth(55);
|
||||
lineNumberArea.setMaxWidth(55);
|
||||
// 设置显示滚动条样式类
|
||||
/* lineNumberArea.getStyleClass().add("hide-scrollbars");
|
||||
mainTextArea.getStyleClass().add("show-scrollbars"); */
|
||||
|
||||
mainTextArea.textProperty().addListener((observable, oldValue, newValue) -> updateLineNumberArea());
|
||||
|
||||
// 当主要文本区域的垂直滚动位置发生变化时,使行号文本区域的滚动位置保持一致
|
||||
mainTextArea.scrollTopProperty().addListener((observable, oldValue, newValue) -> {
|
||||
lineNumberArea.setScrollTop(mainTextArea.getScrollTop());
|
||||
});
|
||||
|
||||
// 当行号文本区域的垂直滚动位置发生变化时,使主要文本区域的滚动位置保持一致
|
||||
lineNumberArea.scrollTopProperty().addListener((observable, oldValue, newValue) -> {
|
||||
mainTextArea.setScrollTop(lineNumberArea.getScrollTop());
|
||||
});
|
||||
|
||||
setCenter(mainTextArea);
|
||||
setLeft(lineNumberArea);
|
||||
}
|
||||
|
||||
public StringProperty textProperty() {
|
||||
return mainTextArea.textProperty();
|
||||
}
|
||||
|
||||
|
||||
private void updateLineNumberArea() {
|
||||
// 保存当前的滚动位置
|
||||
/*
|
||||
更新行号文本区域的内容,根据主要文本区域的段落数生成行号。
|
||||
*/
|
||||
double mainTextAreaScrollTop = mainTextArea.getScrollTop();
|
||||
double lineNumberAreaScrollTop = lineNumberArea.getScrollTop();
|
||||
|
||||
int numOfLines = mainTextArea.getParagraphs().size();
|
||||
StringBuilder lineNumberText = new StringBuilder();
|
||||
for (int i = 1; i <= numOfLines; i++) {
|
||||
lineNumberText.append(i).append("\n");
|
||||
}
|
||||
lineNumberArea.setText(lineNumberText.toString());
|
||||
|
||||
// 恢复之前的滚动位置
|
||||
mainTextArea.setScrollTop(mainTextAreaScrollTop);
|
||||
lineNumberArea.setScrollTop(lineNumberAreaScrollTop);
|
||||
}
|
||||
|
||||
public TextArea getMainTextArea() {
|
||||
return mainTextArea;
|
||||
}
|
||||
}
|
||||
@ -2,11 +2,7 @@ package org.jcnc.jnotepad.view.init;
|
||||
|
||||
import javafx.event.ActionEvent;
|
||||
import javafx.event.EventHandler;
|
||||
import javafx.scene.Scene;
|
||||
import javafx.scene.control.TextArea;
|
||||
import javafx.scene.input.KeyCode;
|
||||
import javafx.scene.input.KeyCodeCombination;
|
||||
import javafx.scene.input.KeyCombination;
|
||||
import org.jcnc.jnotepad.ui.LineNumberTextArea;
|
||||
import org.jcnc.jnotepad.controller.manager.Controller;
|
||||
import org.jcnc.jnotepad.controller.manager.ShortcutKey;
|
||||
|
||||
@ -21,13 +17,13 @@ public class View {
|
||||
|
||||
public void initItem() {
|
||||
// 初始化菜单项的事件处理器
|
||||
EventHandler<ActionEvent> newFileEventHandler = Controller.getInstance().getNewFileEventHandler(new TextArea());
|
||||
EventHandler<ActionEvent> newFileEventHandler = Controller.getInstance().getNewFileEventHandler(new LineNumberTextArea());
|
||||
newItem.setOnAction(newFileEventHandler);
|
||||
EventHandler<ActionEvent> openFileEventHandler = Controller.getInstance().getOpenFileEventHandler();
|
||||
openItem.setOnAction(openFileEventHandler);
|
||||
EventHandler<ActionEvent> saveAsFileEventHandler = Controller.getInstance().getSaveAsFileEventHandler();
|
||||
saveAsItem.setOnAction(saveAsFileEventHandler);
|
||||
lineFeedItem.setOnAction(Controller.getInstance().getLineFeedEventHandler(new TextArea()));
|
||||
lineFeedItem.setOnAction(Controller.getInstance().getLineFeedEventHandler(new LineNumberTextArea()));
|
||||
}
|
||||
|
||||
public void initTabPane() {
|
||||
|
||||
@ -3,12 +3,12 @@ package org.jcnc.jnotepad.view.manager;
|
||||
import javafx.geometry.Insets;
|
||||
import javafx.scene.Scene;
|
||||
import javafx.scene.control.*;
|
||||
import javafx.scene.input.KeyCombination;
|
||||
import javafx.scene.layout.BorderPane;
|
||||
import javafx.scene.layout.HBox;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* 该类管理记事本应用程序的视图组件。
|
||||
@ -30,6 +30,8 @@ public class ViewManager {
|
||||
// 主界面布局
|
||||
public static BorderPane root; //主布局
|
||||
|
||||
|
||||
|
||||
// 多个标签页
|
||||
public static TabPane tabPane; //标签页栏
|
||||
|
||||
@ -47,6 +49,7 @@ public class ViewManager {
|
||||
* @return ViewManager的实例。
|
||||
*/
|
||||
public static ViewManager getInstance(Scene scene) {
|
||||
|
||||
if (instance == null) {
|
||||
instance = new ViewManager(scene);
|
||||
}
|
||||
@ -60,7 +63,11 @@ public class ViewManager {
|
||||
*/
|
||||
private ViewManager(Scene scene) {
|
||||
root = new BorderPane();
|
||||
|
||||
scene.setRoot(root);
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
@ -125,5 +132,8 @@ public class ViewManager {
|
||||
BorderPane.setMargin(statusBox, new Insets(5, 10, 5, 10));
|
||||
|
||||
scene.setRoot(root);
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
11
src/main/resources/styles.css
Normal file
11
src/main/resources/styles.css
Normal file
@ -0,0 +1,11 @@
|
||||
/* 显示滚动条 */
|
||||
.show-scrollbars .scroll-pane {
|
||||
-fx-hbar-policy: as-needed;
|
||||
-fx-vbar-policy: as-needed;
|
||||
}
|
||||
|
||||
/* 不显示滚动条 */
|
||||
.hide-scrollbars .scroll-pane {
|
||||
-fx-hbar-policy: never;
|
||||
-fx-vbar-policy: never;
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user