增加多语言配置文件
This commit is contained in:
parent
5aea9e96a9
commit
362e63d781
@ -1,12 +0,0 @@
|
|||||||
package org.jcnc.jnotepad.Interface;
|
|
||||||
|
|
||||||
import java.util.Properties;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author 许轲
|
|
||||||
*/
|
|
||||||
public interface ConfigInterface {
|
|
||||||
void showErrorAlert();
|
|
||||||
Properties readPropertiesFromFile();
|
|
||||||
void initializePropertiesFile();
|
|
||||||
}
|
|
||||||
@ -29,6 +29,7 @@ public class AppConstants {
|
|||||||
/**
|
/**
|
||||||
* 配置文件名
|
* 配置文件名
|
||||||
*/
|
*/
|
||||||
public static final String PROPERTY_FILE_NAME = "project.txt";
|
public static final String CH_LANGUAGE_PACK_NAME = "ch_language_pack.txt";
|
||||||
|
|
||||||
|
public static final String EN_LANGUAGE_PACK_NAME = "en_language_pack.txt";
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2,12 +2,15 @@ package org.jcnc.jnotepad.controller.event.handler;
|
|||||||
|
|
||||||
import javafx.event.ActionEvent;
|
import javafx.event.ActionEvent;
|
||||||
import javafx.event.EventHandler;
|
import javafx.event.EventHandler;
|
||||||
|
import org.jcnc.jnotepad.init.Config;
|
||||||
import org.jcnc.jnotepad.ui.LineNumberTextArea;
|
import org.jcnc.jnotepad.ui.LineNumberTextArea;
|
||||||
import org.jcnc.jnotepad.ui.status.JNotepadStatusBox;
|
import org.jcnc.jnotepad.ui.status.JNotepadStatusBox;
|
||||||
import org.jcnc.jnotepad.ui.tab.JNotepadTab;
|
import org.jcnc.jnotepad.ui.tab.JNotepadTab;
|
||||||
import org.jcnc.jnotepad.ui.tab.JNotepadTabPane;
|
import org.jcnc.jnotepad.ui.tab.JNotepadTabPane;
|
||||||
import org.jcnc.jnotepad.view.manager.ViewManager;
|
import org.jcnc.jnotepad.view.manager.ViewManager;
|
||||||
|
|
||||||
|
import java.util.Properties;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 新建文件事件的事件处理程序。
|
* 新建文件事件的事件处理程序。
|
||||||
@ -17,7 +20,12 @@ import org.jcnc.jnotepad.view.manager.ViewManager;
|
|||||||
* @author 许轲
|
* @author 许轲
|
||||||
*/
|
*/
|
||||||
public class NewFile implements EventHandler<ActionEvent> {
|
public class NewFile implements EventHandler<ActionEvent> {
|
||||||
|
|
||||||
|
Config config = new Config();
|
||||||
|
Properties properties = config.readPropertiesFromFile();
|
||||||
|
String NEW_TEXT = properties.getProperty("NEW_TEXT");
|
||||||
/**
|
/**
|
||||||
|
*
|
||||||
* 处理新建文件事件。
|
* 处理新建文件事件。
|
||||||
*
|
*
|
||||||
* @param event 事件对象
|
* @param event 事件对象
|
||||||
@ -31,7 +39,7 @@ public class NewFile implements EventHandler<ActionEvent> {
|
|||||||
// TODO: refactor:统一TextArea新建、绑定监听器入口
|
// TODO: refactor:统一TextArea新建、绑定监听器入口
|
||||||
ViewManager viewManager = ViewManager.getInstance();
|
ViewManager viewManager = ViewManager.getInstance();
|
||||||
// 将Tab页添加到TabPane中
|
// 将Tab页添加到TabPane中
|
||||||
JNotepadTabPane.getInstance().addNewTab(new JNotepadTab("新建文本 "
|
JNotepadTabPane.getInstance().addNewTab(new JNotepadTab(NEW_TEXT
|
||||||
+ viewManager.selfIncreaseAndGetTabIndex(),
|
+ viewManager.selfIncreaseAndGetTabIndex(),
|
||||||
textArea));
|
textArea));
|
||||||
|
|
||||||
|
|||||||
@ -3,6 +3,7 @@ package org.jcnc.jnotepad.controller.manager;
|
|||||||
import javafx.application.Platform;
|
import javafx.application.Platform;
|
||||||
import javafx.concurrent.Task;
|
import javafx.concurrent.Task;
|
||||||
import org.jcnc.jnotepad.Interface.ControllerInterface;
|
import org.jcnc.jnotepad.Interface.ControllerInterface;
|
||||||
|
import org.jcnc.jnotepad.init.Config;
|
||||||
import org.jcnc.jnotepad.tool.EncodingDetector;
|
import org.jcnc.jnotepad.tool.EncodingDetector;
|
||||||
import org.jcnc.jnotepad.tool.LogUtil;
|
import org.jcnc.jnotepad.tool.LogUtil;
|
||||||
import org.jcnc.jnotepad.ui.LineNumberTextArea;
|
import org.jcnc.jnotepad.ui.LineNumberTextArea;
|
||||||
@ -16,6 +17,7 @@ import java.io.FileReader;
|
|||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.nio.charset.Charset;
|
import java.nio.charset.Charset;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Properties;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 控制器类,实现ControllerInterface接口,用于管理文本编辑器的各种操作和事件处理。
|
* 控制器类,实现ControllerInterface接口,用于管理文本编辑器的各种操作和事件处理。
|
||||||
@ -24,6 +26,12 @@ import java.util.List;
|
|||||||
* @author 许轲
|
* @author 许轲
|
||||||
*/
|
*/
|
||||||
public class Controller implements ControllerInterface {
|
public class Controller implements ControllerInterface {
|
||||||
|
|
||||||
|
Config config = new Config();
|
||||||
|
Properties properties = config.readPropertiesFromFile();
|
||||||
|
|
||||||
|
|
||||||
|
String NEW_FILE = properties.getProperty("NEW_FILE","新建文件");
|
||||||
private static final Controller INSTANCE = new Controller();
|
private static final Controller INSTANCE = new Controller();
|
||||||
|
|
||||||
private Controller() {
|
private Controller() {
|
||||||
@ -110,7 +118,7 @@ public class Controller implements ControllerInterface {
|
|||||||
@Override
|
@Override
|
||||||
public void updateUiWithNewTextArea(LineNumberTextArea textArea) {
|
public void updateUiWithNewTextArea(LineNumberTextArea textArea) {
|
||||||
ViewManager viewManager = ViewManager.getInstance();
|
ViewManager viewManager = ViewManager.getInstance();
|
||||||
String tabTitle = "新建文件 " + viewManager.selfIncreaseAndGetTabIndex();
|
String tabTitle = NEW_FILE + viewManager.selfIncreaseAndGetTabIndex();
|
||||||
JNotepadTabPane.getInstance().addNewTab(new JNotepadTab(tabTitle, textArea));
|
JNotepadTabPane.getInstance().addNewTab(new JNotepadTab(tabTitle, textArea));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,43 +1,106 @@
|
|||||||
package org.jcnc.jnotepad.init;
|
package org.jcnc.jnotepad.init;
|
||||||
|
|
||||||
import javafx.scene.control.Alert;
|
|
||||||
import org.jcnc.jnotepad.Interface.ConfigInterface;
|
|
||||||
|
|
||||||
import java.io.*;
|
import java.io.*;
|
||||||
|
import java.nio.charset.StandardCharsets;
|
||||||
import java.util.Properties;
|
import java.util.Properties;
|
||||||
|
|
||||||
import static org.jcnc.jnotepad.constants.AppConstants.PROPERTY_FILE_NAME;
|
import static org.jcnc.jnotepad.constants.AppConstants.CH_LANGUAGE_PACK_NAME;
|
||||||
|
import static org.jcnc.jnotepad.constants.AppConstants.EN_LANGUAGE_PACK_NAME;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author 许轲
|
* @author 许轲
|
||||||
|
* 该类负责配置文件的读取和初始化操作。
|
||||||
*/
|
*/
|
||||||
public class Config implements ConfigInterface {
|
public class Config {
|
||||||
|
|
||||||
|
String LANGUAGE_PACK_NAME;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 从文件中读取属性配置。
|
||||||
|
*
|
||||||
|
* @return 包含从文件中读取的属性的 Properties 对象。
|
||||||
|
*/
|
||||||
public Properties readPropertiesFromFile() {
|
public Properties readPropertiesFromFile() {
|
||||||
Properties properties = new Properties();
|
Properties properties = new Properties();
|
||||||
try (InputStream inputStream = new FileInputStream(PROPERTY_FILE_NAME)) {
|
|
||||||
properties.load(inputStream);
|
LANGUAGE_PACK_NAME = EN_LANGUAGE_PACK_NAME;
|
||||||
|
try (InputStream inputStream = new FileInputStream(LANGUAGE_PACK_NAME)) {
|
||||||
|
InputStreamReader reader = new InputStreamReader(inputStream, StandardCharsets.UTF_8); // 使用 UTF-8 编码
|
||||||
|
properties.load(reader);
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
|
// 如果读取出错,则调用初始化方法
|
||||||
initializePropertiesFile();
|
initializePropertiesFile();
|
||||||
}
|
}
|
||||||
return properties;
|
return properties;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 初始化属性配置文件。
|
||||||
|
* 如果属性文件不存在,将创建一个新的属性文件并设置默认属性。
|
||||||
|
*/
|
||||||
public void initializePropertiesFile() {
|
public void initializePropertiesFile() {
|
||||||
Properties defaultProperties = new Properties();
|
Properties chLanguagePack = getCHLanguagePack();
|
||||||
defaultProperties.setProperty("title", "JNotepad");
|
|
||||||
|
|
||||||
try (OutputStream outputStream = new FileOutputStream(PROPERTY_FILE_NAME)) {
|
Properties enLanguagePack = getENLanguagePack();
|
||||||
defaultProperties.store(outputStream, "JNotepad Properties");
|
|
||||||
} catch (IOException e) {
|
try (OutputStream outputStream = new FileOutputStream(CH_LANGUAGE_PACK_NAME)) {
|
||||||
showErrorAlert();
|
OutputStreamWriter writer = new OutputStreamWriter(outputStream, StandardCharsets.UTF_8); // 使用 UTF-8 编码
|
||||||
|
chLanguagePack.store(writer, "JNotepad ch_language_pack");
|
||||||
|
|
||||||
|
} catch (IOException ignored) {
|
||||||
|
}
|
||||||
|
|
||||||
|
try (OutputStream outputStream = new FileOutputStream(EN_LANGUAGE_PACK_NAME)) {
|
||||||
|
OutputStreamWriter writer = new OutputStreamWriter(outputStream, StandardCharsets.UTF_8); // 使用 UTF-8 编码
|
||||||
|
enLanguagePack.store(writer, "JNotepad en_language_pack");
|
||||||
|
|
||||||
|
} catch (IOException ignored) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void showErrorAlert() {
|
private static Properties getCHLanguagePack() {
|
||||||
Alert alert = new Alert(Alert.AlertType.ERROR);
|
Properties properties = new Properties();
|
||||||
alert.setTitle("错误");
|
properties.setProperty("TITLE", "JNotepad"); // 设置默认属性
|
||||||
alert.setHeaderText("文件读写错误");
|
properties.setProperty("NEW_TEXT", "新建文件");
|
||||||
alert.setContentText("文件读写错误");
|
properties.setProperty("SAVA", "保存");
|
||||||
alert.showAndWait();
|
properties.setProperty("FILE", "文件");
|
||||||
|
properties.setProperty("NEW", "新建");
|
||||||
|
properties.setProperty("OPEN", "打开");
|
||||||
|
properties.setProperty("SAVA_AS", "另存为");
|
||||||
|
properties.setProperty("SET", "设置");
|
||||||
|
properties.setProperty("WORD_WRAP", "自动换行");
|
||||||
|
properties.setProperty("PLUGIN", "插件");
|
||||||
|
properties.setProperty("ADD_PLUGIN", "增加插件");
|
||||||
|
properties.setProperty("STATISTICS", "统计字数");
|
||||||
|
properties.setProperty("ROW", "行数");
|
||||||
|
properties.setProperty("COLUMN", "列数");
|
||||||
|
properties.setProperty("WORD_COUNT", "字数");
|
||||||
|
properties.setProperty("ENCODE", "编码");
|
||||||
|
properties.setProperty("NEW_FILE", "新建文件");
|
||||||
|
return properties;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static Properties getENLanguagePack() {
|
||||||
|
Properties properties = new Properties();
|
||||||
|
|
||||||
|
properties.setProperty("TITLE", "JNotepad");
|
||||||
|
properties.setProperty("NEW_TEXT", "New File");
|
||||||
|
properties.setProperty("SAVA", "Save");
|
||||||
|
properties.setProperty("FILE", "File");
|
||||||
|
properties.setProperty("NEW", "New");
|
||||||
|
properties.setProperty("OPEN", "Open");
|
||||||
|
properties.setProperty("SAVA_AS", "Save As");
|
||||||
|
properties.setProperty("SET", "Settings");
|
||||||
|
properties.setProperty("WORD_WRAP", "Word Wrap");
|
||||||
|
properties.setProperty("PLUGIN", "Plugins");
|
||||||
|
properties.setProperty("ADD_PLUGIN", "Add Plugin");
|
||||||
|
properties.setProperty("STATISTICS", "Word Count");
|
||||||
|
properties.setProperty("ROW", "Row");
|
||||||
|
properties.setProperty("COLUMN", "Column");
|
||||||
|
properties.setProperty("WORD_COUNT", "Word Count");
|
||||||
|
properties.setProperty("ENCODE", "Encoding");
|
||||||
|
properties.setProperty("NEW_FILE", "New File");
|
||||||
|
return properties;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -6,11 +6,13 @@ import javafx.scene.control.MenuBar;
|
|||||||
import javafx.scene.control.MenuItem;
|
import javafx.scene.control.MenuItem;
|
||||||
import org.jcnc.jnotepad.app.config.GlobalConfig;
|
import org.jcnc.jnotepad.app.config.GlobalConfig;
|
||||||
import org.jcnc.jnotepad.controller.event.handler.*;
|
import org.jcnc.jnotepad.controller.event.handler.*;
|
||||||
|
import org.jcnc.jnotepad.init.Config;
|
||||||
import org.jcnc.jnotepad.ui.tab.JNotepadTab;
|
import org.jcnc.jnotepad.ui.tab.JNotepadTab;
|
||||||
import org.jcnc.jnotepad.ui.tab.JNotepadTabPane;
|
import org.jcnc.jnotepad.ui.tab.JNotepadTabPane;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.Properties;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 封装菜单栏组件。
|
* 封装菜单栏组件。
|
||||||
@ -19,6 +21,24 @@ import java.util.Map;
|
|||||||
*/
|
*/
|
||||||
public class JNotepadMenuBar extends MenuBar {
|
public class JNotepadMenuBar extends MenuBar {
|
||||||
|
|
||||||
|
Config config = new Config();
|
||||||
|
Properties properties = config.readPropertiesFromFile();
|
||||||
|
String SAVA = properties.getProperty("SAVA");
|
||||||
|
String FILE = properties.getProperty("FILE");
|
||||||
|
String NEW = properties.getProperty("NEW");
|
||||||
|
String OPEN = properties.getProperty("OPEN");
|
||||||
|
String SAVA_AS = properties.getProperty("SAVA_AS");
|
||||||
|
|
||||||
|
String SET = properties.getProperty("SET");
|
||||||
|
|
||||||
|
String WORD_WRAP = properties.getProperty("WORD_WRAP");
|
||||||
|
|
||||||
|
String PLUGIN = properties.getProperty("PLUGIN");
|
||||||
|
|
||||||
|
String ADD_PLUGIN = properties.getProperty("ADD_PLUGIN");
|
||||||
|
|
||||||
|
String STATISTICS = properties.getProperty("STATISTICS");
|
||||||
|
|
||||||
private static final JNotepadMenuBar MENU_BAR = new JNotepadMenuBar();
|
private static final JNotepadMenuBar MENU_BAR = new JNotepadMenuBar();
|
||||||
|
|
||||||
private JNotepadMenuBar() {
|
private JNotepadMenuBar() {
|
||||||
@ -90,18 +110,18 @@ public class JNotepadMenuBar extends MenuBar {
|
|||||||
*/
|
*/
|
||||||
private void initFileMenu() {
|
private void initFileMenu() {
|
||||||
// 文件菜单
|
// 文件菜单
|
||||||
fileMenu = new Menu("文件");
|
fileMenu = new Menu(FILE);
|
||||||
|
|
||||||
newItem = new MenuItem("新建");
|
newItem = new MenuItem(NEW);
|
||||||
itemMap.put("newItem", newItem);
|
itemMap.put("newItem", newItem);
|
||||||
|
|
||||||
openItem = new MenuItem("打开");
|
openItem = new MenuItem(OPEN);
|
||||||
itemMap.put("openItem", openItem);
|
itemMap.put("openItem", openItem);
|
||||||
|
|
||||||
saveItem = new MenuItem("保存");
|
saveItem = new MenuItem(SAVA);
|
||||||
itemMap.put("saveItem", saveItem);
|
itemMap.put("saveItem", saveItem);
|
||||||
|
|
||||||
saveAsItem = new MenuItem("另存为");
|
saveAsItem = new MenuItem(SAVA_AS);
|
||||||
itemMap.put("saveAsItem", saveAsItem);
|
itemMap.put("saveAsItem", saveAsItem);
|
||||||
|
|
||||||
fileMenu.getItems().addAll(newItem, openItem, saveItem, saveAsItem);
|
fileMenu.getItems().addAll(newItem, openItem, saveItem, saveAsItem);
|
||||||
@ -112,9 +132,9 @@ public class JNotepadMenuBar extends MenuBar {
|
|||||||
*/
|
*/
|
||||||
private void initSettingMenu() {
|
private void initSettingMenu() {
|
||||||
// 设置菜单
|
// 设置菜单
|
||||||
setMenu = new Menu("设置");
|
setMenu = new Menu(SET);
|
||||||
|
|
||||||
lineFeedItem = new CheckMenuItem("自动换行");
|
lineFeedItem = new CheckMenuItem(WORD_WRAP);
|
||||||
itemMap.put("lineFeedItem", lineFeedItem);
|
itemMap.put("lineFeedItem", lineFeedItem);
|
||||||
lineFeedItem.selectedProperty().set(true);
|
lineFeedItem.selectedProperty().set(true);
|
||||||
|
|
||||||
@ -126,11 +146,11 @@ public class JNotepadMenuBar extends MenuBar {
|
|||||||
*/
|
*/
|
||||||
private void initPluginMenu() {
|
private void initPluginMenu() {
|
||||||
// 插件菜单
|
// 插件菜单
|
||||||
pluginMenu = new Menu("插件");
|
pluginMenu = new Menu(PLUGIN);
|
||||||
addItem = new MenuItem("增加插件");
|
addItem = new MenuItem(ADD_PLUGIN);
|
||||||
itemMap.put("addItem", addItem);
|
itemMap.put("addItem", addItem);
|
||||||
|
|
||||||
countItem = new MenuItem("统计字数");
|
countItem = new MenuItem(STATISTICS);
|
||||||
itemMap.put("countItem", countItem);
|
itemMap.put("countItem", countItem);
|
||||||
|
|
||||||
pluginMenu.getItems().addAll(addItem, countItem);
|
pluginMenu.getItems().addAll(addItem, countItem);
|
||||||
|
|||||||
@ -4,9 +4,11 @@ import javafx.geometry.Insets;
|
|||||||
import javafx.scene.control.Label;
|
import javafx.scene.control.Label;
|
||||||
import javafx.scene.control.TextArea;
|
import javafx.scene.control.TextArea;
|
||||||
import javafx.scene.layout.HBox;
|
import javafx.scene.layout.HBox;
|
||||||
|
import org.jcnc.jnotepad.init.Config;
|
||||||
import org.jcnc.jnotepad.ui.tab.JNotepadTabPane;
|
import org.jcnc.jnotepad.ui.tab.JNotepadTabPane;
|
||||||
|
|
||||||
import java.nio.charset.Charset;
|
import java.nio.charset.Charset;
|
||||||
|
import java.util.Properties;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 状态栏组件封装。
|
* 状态栏组件封装。
|
||||||
@ -17,6 +19,16 @@ import java.nio.charset.Charset;
|
|||||||
*/
|
*/
|
||||||
public class JNotepadStatusBox extends HBox {
|
public class JNotepadStatusBox extends HBox {
|
||||||
|
|
||||||
|
Config config = new Config();
|
||||||
|
Properties properties = config.readPropertiesFromFile();
|
||||||
|
String ROW = properties.getProperty("ROW");
|
||||||
|
|
||||||
|
String COLUMN = properties.getProperty("COLUMN");
|
||||||
|
|
||||||
|
String WORD_COUNT = properties.getProperty("WORD_COUNT");
|
||||||
|
|
||||||
|
String ENCODE = properties.getProperty("ENCODE");
|
||||||
|
|
||||||
private static final JNotepadStatusBox STATUS_BOX = new JNotepadStatusBox();
|
private static final JNotepadStatusBox STATUS_BOX = new JNotepadStatusBox();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -31,7 +43,7 @@ public class JNotepadStatusBox extends HBox {
|
|||||||
|
|
||||||
private JNotepadStatusBox() {
|
private JNotepadStatusBox() {
|
||||||
// 创建状态栏
|
// 创建状态栏
|
||||||
statusLabel = new Label("行数:1 \t列数:1 \t字数:0 ");
|
statusLabel = new Label(ROW + ":1 \t" + COLUMN + ":1 \t" + WORD_COUNT + ":0 ");
|
||||||
// 创建新的标签以显示编码信息
|
// 创建新的标签以显示编码信息
|
||||||
enCodingLabel = new Label();
|
enCodingLabel = new Label();
|
||||||
|
|
||||||
@ -51,13 +63,14 @@ public class JNotepadStatusBox extends HBox {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 更新编码展示
|
* 更新编码展示
|
||||||
|
*
|
||||||
* @param encoding 文件编码
|
* @param encoding 文件编码
|
||||||
*/
|
*/
|
||||||
public void updateEncodingLabel(String encoding) {
|
public void updateEncodingLabel(String encoding) {
|
||||||
if (encoding == null) {
|
if (encoding == null) {
|
||||||
encoding = Charset.defaultCharset().name();
|
encoding = Charset.defaultCharset().name();
|
||||||
}
|
}
|
||||||
this.enCodingLabel.setText("\t编码: " + encoding);
|
this.enCodingLabel.setText("\t" + ENCODE + ": " + encoding);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -69,7 +82,7 @@ public class JNotepadStatusBox extends HBox {
|
|||||||
int row = getRow(caretPosition, textArea.getText());
|
int row = getRow(caretPosition, textArea.getText());
|
||||||
int column = getColumn(caretPosition, textArea.getText());
|
int column = getColumn(caretPosition, textArea.getText());
|
||||||
int length = textArea.getLength();
|
int length = textArea.getLength();
|
||||||
this.statusLabel.setText("行: " + row + " \t列: " + column + " \t字数: " + length);
|
this.statusLabel.setText(ROW + ": " + row + " \t" + COLUMN + ": " + column + " \t" + WORD_COUNT + ": " + length);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user