mirror of
https://git.huckle.dev/Huckles-Minecraft-Archive/jpexs-decompiler.git
synced 2026-09-25 08:10:45 +00:00
copyright year updated 2
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2010-2014 JPEXS
|
||||
* Copyright (C) 2010-2015 JPEXS
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
||||
+194
-194
@@ -1,194 +1,194 @@
|
||||
/*
|
||||
* Copyright (C) 2010-2014 JPEXS
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.jpexs.browsers.cache.chrome;
|
||||
|
||||
import com.jpexs.browsers.cache.CacheEntry;
|
||||
import com.jpexs.browsers.cache.CacheImplementation;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.StandardCopyOption;
|
||||
import java.security.AccessController;
|
||||
import java.security.PrivilegedAction;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author JPEXS
|
||||
*/
|
||||
public class ChromeCache implements CacheImplementation {
|
||||
|
||||
private static ChromeCache instance;
|
||||
private File tempDir;
|
||||
private List<File> dataFiles;
|
||||
private File indexFile;
|
||||
|
||||
private ChromeCache() {
|
||||
Runtime.getRuntime().addShutdownHook(new Thread() {
|
||||
@Override
|
||||
public void run() {
|
||||
free();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public static ChromeCache getInstance() {
|
||||
if (instance == null) {
|
||||
instance = new ChromeCache();
|
||||
}
|
||||
return instance;
|
||||
}
|
||||
private boolean loaded = false;
|
||||
private Index index;
|
||||
|
||||
@Override
|
||||
public List<CacheEntry> getEntries() {
|
||||
if (!loaded) {
|
||||
refresh();
|
||||
}
|
||||
if (!loaded) {
|
||||
return null;
|
||||
}
|
||||
List<CacheEntry> ret = new ArrayList<>();
|
||||
try {
|
||||
List<EntryStore> entries = index.getEntries();
|
||||
for (EntryStore en : entries) {
|
||||
if (en.state == EntryStore.ENTRY_NORMAL) {
|
||||
String key = en.getKey();
|
||||
if (key != null && !key.trim().isEmpty()) {
|
||||
ret.add(en);
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (IOException ex) {
|
||||
Logger.getLogger(ChromeCache.class.getName()).log(Level.SEVERE, null, ex);
|
||||
return null;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void refresh() {
|
||||
free();
|
||||
File cacheDir = null;
|
||||
try {
|
||||
cacheDir = getCacheDirectory();
|
||||
} catch (IOException ex) {
|
||||
Logger.getLogger(ChromeCache.class.getName()).log(Level.SEVERE, null, ex);
|
||||
}
|
||||
if (cacheDir == null) {
|
||||
return;
|
||||
}
|
||||
File systemTempDir = new File(System.getProperty("java.io.tmpdir"));
|
||||
File originalIndexFile = new File(cacheDir + File.separator + "index");
|
||||
tempDir = new File(systemTempDir, "cacheView" + System.identityHashCode(this));
|
||||
tempDir.mkdir();
|
||||
indexFile = new File(tempDir, "index");
|
||||
try {
|
||||
Files.copy(originalIndexFile.toPath(), indexFile.toPath(), StandardCopyOption.REPLACE_EXISTING);
|
||||
} catch (IOException ex) {
|
||||
Logger.getLogger(ChromeCache.class.getName()).log(Level.SEVERE, null, ex);
|
||||
return;
|
||||
}
|
||||
File originalDataFile;
|
||||
dataFiles = new ArrayList<>();
|
||||
for (int i = 0; (originalDataFile = new File(cacheDir, "data_" + i)).exists(); i++) {
|
||||
File dataFile = new File(tempDir, "data_" + i);
|
||||
dataFiles.add(dataFile);
|
||||
try {
|
||||
Files.copy(originalDataFile.toPath(), dataFile.toPath(), StandardCopyOption.REPLACE_EXISTING);
|
||||
} catch (IOException ex) {
|
||||
Logger.getLogger(ChromeCache.class.getName()).log(Level.SEVERE, null, ex);
|
||||
return;
|
||||
}
|
||||
}
|
||||
try {
|
||||
index = new Index(indexFile, cacheDir);
|
||||
} catch (IOException ex) {
|
||||
Logger.getLogger(ChromeCache.class.getName()).log(Level.SEVERE, null, ex);
|
||||
}
|
||||
loaded = true;
|
||||
}
|
||||
|
||||
private enum OSId {
|
||||
|
||||
WINDOWS, OSX, UNIX
|
||||
}
|
||||
|
||||
private static OSId getOSId() {
|
||||
PrivilegedAction<String> doGetOSName = new PrivilegedAction<String>() {
|
||||
@Override
|
||||
public String run() {
|
||||
return System.getProperty("os.name");
|
||||
}
|
||||
};
|
||||
OSId id = OSId.UNIX;
|
||||
String osName = AccessController.doPrivileged(doGetOSName);
|
||||
if (osName != null) {
|
||||
if (osName.toLowerCase().startsWith("mac os x")) {
|
||||
id = OSId.OSX;
|
||||
} else if (osName.contains("Windows")) {
|
||||
id = OSId.WINDOWS;
|
||||
}
|
||||
}
|
||||
return id;
|
||||
}
|
||||
|
||||
public static File getCacheDirectory() throws IOException {
|
||||
String userHome = null;
|
||||
File ret = null;
|
||||
try {
|
||||
userHome = System.getProperty("user.home");
|
||||
} catch (SecurityException ignore) {
|
||||
}
|
||||
if (userHome != null) {
|
||||
OSId osId = getOSId();
|
||||
if (osId == OSId.WINDOWS) {
|
||||
ret = new File(userHome + "\\AppData\\Local\\Google\\Chrome\\User Data\\Default\\Cache\\");
|
||||
if (!ret.exists()) {
|
||||
ret = new File(userHome + "\\Local Settings\\Application Data\\Google\\Chrome\\User Data\\Default\\Cache");
|
||||
}
|
||||
} else if (osId == OSId.OSX) {
|
||||
ret = new File(userHome + "/Library/Caches/Google/Chrome/Default/Cache");
|
||||
} else {
|
||||
ret = new File(userHome + "/.config/google-chrome/Default/Application Cache/Cache/");
|
||||
if (!ret.exists()) {
|
||||
ret = new File(userHome + "/.cache/chromium/Default/Cache");
|
||||
}
|
||||
}
|
||||
}
|
||||
if ((ret != null) && !ret.exists()) {
|
||||
return null;
|
||||
}
|
||||
return ret;
|
||||
|
||||
}
|
||||
|
||||
private void free() {
|
||||
if (loaded) {
|
||||
index.free();
|
||||
indexFile.delete();
|
||||
for (File d : dataFiles) {
|
||||
d.delete();
|
||||
}
|
||||
tempDir.delete();
|
||||
}
|
||||
}
|
||||
}
|
||||
/*
|
||||
* Copyright (C) 2010-2015 JPEXS
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.jpexs.browsers.cache.chrome;
|
||||
|
||||
import com.jpexs.browsers.cache.CacheEntry;
|
||||
import com.jpexs.browsers.cache.CacheImplementation;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.StandardCopyOption;
|
||||
import java.security.AccessController;
|
||||
import java.security.PrivilegedAction;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author JPEXS
|
||||
*/
|
||||
public class ChromeCache implements CacheImplementation {
|
||||
|
||||
private static ChromeCache instance;
|
||||
private File tempDir;
|
||||
private List<File> dataFiles;
|
||||
private File indexFile;
|
||||
|
||||
private ChromeCache() {
|
||||
Runtime.getRuntime().addShutdownHook(new Thread() {
|
||||
@Override
|
||||
public void run() {
|
||||
free();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public static ChromeCache getInstance() {
|
||||
if (instance == null) {
|
||||
instance = new ChromeCache();
|
||||
}
|
||||
return instance;
|
||||
}
|
||||
private boolean loaded = false;
|
||||
private Index index;
|
||||
|
||||
@Override
|
||||
public List<CacheEntry> getEntries() {
|
||||
if (!loaded) {
|
||||
refresh();
|
||||
}
|
||||
if (!loaded) {
|
||||
return null;
|
||||
}
|
||||
List<CacheEntry> ret = new ArrayList<>();
|
||||
try {
|
||||
List<EntryStore> entries = index.getEntries();
|
||||
for (EntryStore en : entries) {
|
||||
if (en.state == EntryStore.ENTRY_NORMAL) {
|
||||
String key = en.getKey();
|
||||
if (key != null && !key.trim().isEmpty()) {
|
||||
ret.add(en);
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (IOException ex) {
|
||||
Logger.getLogger(ChromeCache.class.getName()).log(Level.SEVERE, null, ex);
|
||||
return null;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void refresh() {
|
||||
free();
|
||||
File cacheDir = null;
|
||||
try {
|
||||
cacheDir = getCacheDirectory();
|
||||
} catch (IOException ex) {
|
||||
Logger.getLogger(ChromeCache.class.getName()).log(Level.SEVERE, null, ex);
|
||||
}
|
||||
if (cacheDir == null) {
|
||||
return;
|
||||
}
|
||||
File systemTempDir = new File(System.getProperty("java.io.tmpdir"));
|
||||
File originalIndexFile = new File(cacheDir + File.separator + "index");
|
||||
tempDir = new File(systemTempDir, "cacheView" + System.identityHashCode(this));
|
||||
tempDir.mkdir();
|
||||
indexFile = new File(tempDir, "index");
|
||||
try {
|
||||
Files.copy(originalIndexFile.toPath(), indexFile.toPath(), StandardCopyOption.REPLACE_EXISTING);
|
||||
} catch (IOException ex) {
|
||||
Logger.getLogger(ChromeCache.class.getName()).log(Level.SEVERE, null, ex);
|
||||
return;
|
||||
}
|
||||
File originalDataFile;
|
||||
dataFiles = new ArrayList<>();
|
||||
for (int i = 0; (originalDataFile = new File(cacheDir, "data_" + i)).exists(); i++) {
|
||||
File dataFile = new File(tempDir, "data_" + i);
|
||||
dataFiles.add(dataFile);
|
||||
try {
|
||||
Files.copy(originalDataFile.toPath(), dataFile.toPath(), StandardCopyOption.REPLACE_EXISTING);
|
||||
} catch (IOException ex) {
|
||||
Logger.getLogger(ChromeCache.class.getName()).log(Level.SEVERE, null, ex);
|
||||
return;
|
||||
}
|
||||
}
|
||||
try {
|
||||
index = new Index(indexFile, cacheDir);
|
||||
} catch (IOException ex) {
|
||||
Logger.getLogger(ChromeCache.class.getName()).log(Level.SEVERE, null, ex);
|
||||
}
|
||||
loaded = true;
|
||||
}
|
||||
|
||||
private enum OSId {
|
||||
|
||||
WINDOWS, OSX, UNIX
|
||||
}
|
||||
|
||||
private static OSId getOSId() {
|
||||
PrivilegedAction<String> doGetOSName = new PrivilegedAction<String>() {
|
||||
@Override
|
||||
public String run() {
|
||||
return System.getProperty("os.name");
|
||||
}
|
||||
};
|
||||
OSId id = OSId.UNIX;
|
||||
String osName = AccessController.doPrivileged(doGetOSName);
|
||||
if (osName != null) {
|
||||
if (osName.toLowerCase().startsWith("mac os x")) {
|
||||
id = OSId.OSX;
|
||||
} else if (osName.contains("Windows")) {
|
||||
id = OSId.WINDOWS;
|
||||
}
|
||||
}
|
||||
return id;
|
||||
}
|
||||
|
||||
public static File getCacheDirectory() throws IOException {
|
||||
String userHome = null;
|
||||
File ret = null;
|
||||
try {
|
||||
userHome = System.getProperty("user.home");
|
||||
} catch (SecurityException ignore) {
|
||||
}
|
||||
if (userHome != null) {
|
||||
OSId osId = getOSId();
|
||||
if (osId == OSId.WINDOWS) {
|
||||
ret = new File(userHome + "\\AppData\\Local\\Google\\Chrome\\User Data\\Default\\Cache\\");
|
||||
if (!ret.exists()) {
|
||||
ret = new File(userHome + "\\Local Settings\\Application Data\\Google\\Chrome\\User Data\\Default\\Cache");
|
||||
}
|
||||
} else if (osId == OSId.OSX) {
|
||||
ret = new File(userHome + "/Library/Caches/Google/Chrome/Default/Cache");
|
||||
} else {
|
||||
ret = new File(userHome + "/.config/google-chrome/Default/Application Cache/Cache/");
|
||||
if (!ret.exists()) {
|
||||
ret = new File(userHome + "/.cache/chromium/Default/Cache");
|
||||
}
|
||||
}
|
||||
}
|
||||
if ((ret != null) && !ret.exists()) {
|
||||
return null;
|
||||
}
|
||||
return ret;
|
||||
|
||||
}
|
||||
|
||||
private void free() {
|
||||
if (loaded) {
|
||||
index.free();
|
||||
indexFile.delete();
|
||||
for (File d : dataFiles) {
|
||||
d.delete();
|
||||
}
|
||||
tempDir.delete();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+27
-27
@@ -1,27 +1,27 @@
|
||||
/*
|
||||
* Copyright (C) 2010-2014 JPEXS
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.jpexs.browsers.cache.chrome;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author JPEXS
|
||||
*/
|
||||
public class EntryFlags {
|
||||
|
||||
public static final int PARENT_ENTRY = 1;
|
||||
public static final int CHILD_ENTRY = 1 << 1;
|
||||
}
|
||||
/*
|
||||
* Copyright (C) 2010-2015 JPEXS
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.jpexs.browsers.cache.chrome;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author JPEXS
|
||||
*/
|
||||
public class EntryFlags {
|
||||
|
||||
public static final int PARENT_ENTRY = 1;
|
||||
public static final int CHILD_ENTRY = 1 << 1;
|
||||
}
|
||||
|
||||
+28
-28
@@ -1,28 +1,28 @@
|
||||
/*
|
||||
* Copyright (C) 2010-2014 JPEXS
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.jpexs.browsers.cache.chrome;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author JPEXS
|
||||
*/
|
||||
public class EntryState {
|
||||
|
||||
public static final int ENTRY_NORMAL = 0;
|
||||
public static final int ENTRY_EVICTED = 1;
|
||||
public static final int ENTRY_DOOMED = 2;
|
||||
}
|
||||
/*
|
||||
* Copyright (C) 2010-2015 JPEXS
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.jpexs.browsers.cache.chrome;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author JPEXS
|
||||
*/
|
||||
public class EntryState {
|
||||
|
||||
public static final int ENTRY_NORMAL = 0;
|
||||
public static final int ENTRY_EVICTED = 1;
|
||||
public static final int ENTRY_DOOMED = 2;
|
||||
}
|
||||
|
||||
+153
-153
@@ -1,153 +1,153 @@
|
||||
/*
|
||||
* Copyright (C) 2010-2014 JPEXS
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.jpexs.browsers.cache.chrome;
|
||||
|
||||
import com.jpexs.browsers.cache.CacheEntry;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.RandomAccessFile;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author JPEXS
|
||||
*/
|
||||
public class EntryStore extends CacheEntry {
|
||||
|
||||
public static final int ENTRY_NORMAL = 0;
|
||||
public static final int ENTRY_EVICTED = 1; // The entry was recently evicted from the cache.
|
||||
public static final int ENTRY_DOOMED = 2; // The entry was doomed
|
||||
public static final int PARENT_ENTRY = 1; // This entry has children (sparse) entries.
|
||||
public static final int CHILD_ENTRY = 1 << 1;
|
||||
public long hash; // Full hash of the key.
|
||||
public CacheAddr next; // Next entry with the same hash or bucket.
|
||||
public CacheAddr rankings_node; // Rankings node for this entry.
|
||||
public int reuse_count; // How often is this entry used.
|
||||
public int refetch_count; // How often is this fetched from the net.
|
||||
public int state; // Current state.
|
||||
public long creation_time;
|
||||
public int key_len;
|
||||
public CacheAddr long_key; // Optional address of a long key.
|
||||
public int data_size[] = new int[4]; // We can store up to 4 data streams for each
|
||||
public CacheAddr data_addr[] = new CacheAddr[4]; // entry.
|
||||
public long flags; // Any combination of EntryFlags.
|
||||
public int pad[] = new int[4];
|
||||
public long self_hash; // The hash of EntryStore up to this point.
|
||||
public byte key[] = new byte[256 - 24 * 4]; // null terminated
|
||||
|
||||
public EntryStore(InputStream is, File rootDir, Map<Integer, RandomAccessFile> dataFiles, File externalFilesDir) throws IOException {
|
||||
IndexInputStream iis = new IndexInputStream(is);
|
||||
hash = iis.readUInt32();
|
||||
next = new CacheAddr(is, rootDir, dataFiles, externalFilesDir);
|
||||
rankings_node = new CacheAddr(is, rootDir, dataFiles, externalFilesDir);
|
||||
reuse_count = iis.readInt32();
|
||||
refetch_count = iis.readInt32();
|
||||
state = iis.readInt32();
|
||||
creation_time = iis.readUInt64();
|
||||
key_len = iis.readInt32();
|
||||
long_key = new CacheAddr(is, rootDir, dataFiles, externalFilesDir);
|
||||
data_size = new int[4];
|
||||
for (int i = 0; i < 4; i++) {
|
||||
data_size[i] = iis.readInt32();
|
||||
}
|
||||
data_addr = new CacheAddr[4];
|
||||
for (int i = 0; i < 4; i++) {
|
||||
data_addr[i] = new CacheAddr(is, rootDir, dataFiles, externalFilesDir);
|
||||
}
|
||||
flags = iis.readUInt32();
|
||||
pad = new int[4];
|
||||
for (int i = 0; i < 4; i++) {
|
||||
pad[i] = iis.readInt32();
|
||||
}
|
||||
self_hash = iis.readUInt32();
|
||||
key = new byte[256 - 24 * 4];
|
||||
iis.read(key);
|
||||
}
|
||||
|
||||
public HttpResponseInfo getResponseInfo() {
|
||||
try {
|
||||
InputStream is = data_addr[0].getInputStream();
|
||||
if (is == null) {
|
||||
return null;
|
||||
}
|
||||
return new HttpResponseInfo(is);
|
||||
} catch (IOException ex) {
|
||||
Logger.getLogger(EntryStore.class.getName()).log(Level.SEVERE, null, ex);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public int getResponseDataSize() {
|
||||
return data_size[1];
|
||||
}
|
||||
|
||||
@Override
|
||||
public InputStream getResponseRawDataStream() {
|
||||
try {
|
||||
return data_addr[1].getInputStream();
|
||||
} catch (IOException ex) {
|
||||
Logger.getLogger(EntryStore.class.getName()).log(Level.SEVERE, null, ex);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public String getKey() {
|
||||
if (key_len < 0) {
|
||||
return null;
|
||||
}
|
||||
return new String(key, 0, key_len > key.length || key_len < 0 ? key.length : key_len);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getRequestURL() {
|
||||
return getKey();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, String> getResponseHeaders() {
|
||||
HttpResponseInfo ri = getResponseInfo();
|
||||
if (ri == null) {
|
||||
return new HashMap<>();
|
||||
}
|
||||
List<String> headers = ri.headers;
|
||||
Map<String, String> ret = new HashMap<>();
|
||||
for (int h = 1; h < headers.size(); h++) {
|
||||
String hs = headers.get(h);
|
||||
if (hs.contains(":")) {
|
||||
String hp[] = hs.split(":");
|
||||
ret.put(hp[0].trim(), hp[1].trim());
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getStatusLine() {
|
||||
HttpResponseInfo ri = getResponseInfo();
|
||||
return ri.headers.get(0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getRequestMethod() {
|
||||
return "GET";
|
||||
}
|
||||
}
|
||||
/*
|
||||
* Copyright (C) 2010-2015 JPEXS
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.jpexs.browsers.cache.chrome;
|
||||
|
||||
import com.jpexs.browsers.cache.CacheEntry;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.RandomAccessFile;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author JPEXS
|
||||
*/
|
||||
public class EntryStore extends CacheEntry {
|
||||
|
||||
public static final int ENTRY_NORMAL = 0;
|
||||
public static final int ENTRY_EVICTED = 1; // The entry was recently evicted from the cache.
|
||||
public static final int ENTRY_DOOMED = 2; // The entry was doomed
|
||||
public static final int PARENT_ENTRY = 1; // This entry has children (sparse) entries.
|
||||
public static final int CHILD_ENTRY = 1 << 1;
|
||||
public long hash; // Full hash of the key.
|
||||
public CacheAddr next; // Next entry with the same hash or bucket.
|
||||
public CacheAddr rankings_node; // Rankings node for this entry.
|
||||
public int reuse_count; // How often is this entry used.
|
||||
public int refetch_count; // How often is this fetched from the net.
|
||||
public int state; // Current state.
|
||||
public long creation_time;
|
||||
public int key_len;
|
||||
public CacheAddr long_key; // Optional address of a long key.
|
||||
public int data_size[] = new int[4]; // We can store up to 4 data streams for each
|
||||
public CacheAddr data_addr[] = new CacheAddr[4]; // entry.
|
||||
public long flags; // Any combination of EntryFlags.
|
||||
public int pad[] = new int[4];
|
||||
public long self_hash; // The hash of EntryStore up to this point.
|
||||
public byte key[] = new byte[256 - 24 * 4]; // null terminated
|
||||
|
||||
public EntryStore(InputStream is, File rootDir, Map<Integer, RandomAccessFile> dataFiles, File externalFilesDir) throws IOException {
|
||||
IndexInputStream iis = new IndexInputStream(is);
|
||||
hash = iis.readUInt32();
|
||||
next = new CacheAddr(is, rootDir, dataFiles, externalFilesDir);
|
||||
rankings_node = new CacheAddr(is, rootDir, dataFiles, externalFilesDir);
|
||||
reuse_count = iis.readInt32();
|
||||
refetch_count = iis.readInt32();
|
||||
state = iis.readInt32();
|
||||
creation_time = iis.readUInt64();
|
||||
key_len = iis.readInt32();
|
||||
long_key = new CacheAddr(is, rootDir, dataFiles, externalFilesDir);
|
||||
data_size = new int[4];
|
||||
for (int i = 0; i < 4; i++) {
|
||||
data_size[i] = iis.readInt32();
|
||||
}
|
||||
data_addr = new CacheAddr[4];
|
||||
for (int i = 0; i < 4; i++) {
|
||||
data_addr[i] = new CacheAddr(is, rootDir, dataFiles, externalFilesDir);
|
||||
}
|
||||
flags = iis.readUInt32();
|
||||
pad = new int[4];
|
||||
for (int i = 0; i < 4; i++) {
|
||||
pad[i] = iis.readInt32();
|
||||
}
|
||||
self_hash = iis.readUInt32();
|
||||
key = new byte[256 - 24 * 4];
|
||||
iis.read(key);
|
||||
}
|
||||
|
||||
public HttpResponseInfo getResponseInfo() {
|
||||
try {
|
||||
InputStream is = data_addr[0].getInputStream();
|
||||
if (is == null) {
|
||||
return null;
|
||||
}
|
||||
return new HttpResponseInfo(is);
|
||||
} catch (IOException ex) {
|
||||
Logger.getLogger(EntryStore.class.getName()).log(Level.SEVERE, null, ex);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public int getResponseDataSize() {
|
||||
return data_size[1];
|
||||
}
|
||||
|
||||
@Override
|
||||
public InputStream getResponseRawDataStream() {
|
||||
try {
|
||||
return data_addr[1].getInputStream();
|
||||
} catch (IOException ex) {
|
||||
Logger.getLogger(EntryStore.class.getName()).log(Level.SEVERE, null, ex);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public String getKey() {
|
||||
if (key_len < 0) {
|
||||
return null;
|
||||
}
|
||||
return new String(key, 0, key_len > key.length || key_len < 0 ? key.length : key_len);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getRequestURL() {
|
||||
return getKey();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, String> getResponseHeaders() {
|
||||
HttpResponseInfo ri = getResponseInfo();
|
||||
if (ri == null) {
|
||||
return new HashMap<>();
|
||||
}
|
||||
List<String> headers = ri.headers;
|
||||
Map<String, String> ret = new HashMap<>();
|
||||
for (int h = 1; h < headers.size(); h++) {
|
||||
String hs = headers.get(h);
|
||||
if (hs.contains(":")) {
|
||||
String hp[] = hs.split(":");
|
||||
ret.put(hp[0].trim(), hp[1].trim());
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getStatusLine() {
|
||||
HttpResponseInfo ri = getResponseInfo();
|
||||
return ri.headers.get(0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getRequestMethod() {
|
||||
return "GET";
|
||||
}
|
||||
}
|
||||
|
||||
+107
-107
@@ -1,107 +1,107 @@
|
||||
/*
|
||||
* Copyright (C) 2010-2014 JPEXS
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.jpexs.browsers.cache.chrome;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author JPEXS
|
||||
*/
|
||||
public class HttpResponseInfo {
|
||||
|
||||
public long flags;
|
||||
public int version;
|
||||
public long request_time;
|
||||
public long response_time;
|
||||
public long payload_size;
|
||||
public List<String> headers;
|
||||
// The version of the response info used when persisting response info.
|
||||
public static final int RESPONSE_INFO_VERSION = 3;
|
||||
// The minimum version supported for deserializing response info.
|
||||
public static final int RESPONSE_INFO_MINIMUM_VERSION = 1;
|
||||
// We reserve up to 8 bits for the version number.
|
||||
public static final int RESPONSE_INFO_VERSION_MASK = 0xFF;
|
||||
// This bit is set if the response info has a cert at the end.
|
||||
// Version 1 serialized only the end-entity certificate, while subsequent
|
||||
// versions include the available certificate chain.
|
||||
public static final int RESPONSE_INFO_HAS_CERT = 1 << 8;
|
||||
// This bit is set if the response info has a security-bits field (security
|
||||
// strength, in bits, of the SSL connection) at the end.
|
||||
public static final int RESPONSE_INFO_HAS_SECURITY_BITS = 1 << 9;
|
||||
// This bit is set if the response info has a cert status at the end.
|
||||
public static final int RESPONSE_INFO_HAS_CERT_STATUS = 1 << 10;
|
||||
// This bit is set if the response info has vary header data.
|
||||
public static final int RESPONSE_INFO_HAS_VARY_DATA = 1 << 11;
|
||||
// This bit is set if the request was cancelled before completion.
|
||||
public static final int RESPONSE_INFO_TRUNCATED = 1 << 12;
|
||||
// This bit is set if the response was received via SPDY.
|
||||
public static final int RESPONSE_INFO_WAS_SPDY = 1 << 13;
|
||||
// This bit is set if the request has NPN negotiated.
|
||||
public static final int RESPONSE_INFO_WAS_NPN = 1 << 14;
|
||||
// This bit is set if the request was fetched via an explicit proxy.
|
||||
public static final int RESPONSE_INFO_WAS_PROXY = 1 << 15;
|
||||
// This bit is set if the response info has an SSL connection status field.
|
||||
// This contains the ciphersuite used to fetch the resource as well as the
|
||||
// protocol version, compression method and whether SSLv3 fallback was used.
|
||||
public static final int RESPONSE_INFO_HAS_SSL_CONNECTION_STATUS = 1 << 16;
|
||||
// This bit is set if the response info has protocol version.
|
||||
public static final int RESPONSE_INFO_HAS_NPN_NEGOTIATED_PROTOCOL = 1 << 17;
|
||||
// This bit is set if the response info has connection info.
|
||||
public static final int RESPONSE_INFO_HAS_CONNECTION_INFO = 1 << 18;
|
||||
// This bit is set if the request has http authentication.
|
||||
public static final int RESPONSE_INFO_USE_HTTP_AUTHENTICATION = 1 << 19;
|
||||
|
||||
public String getHeaderValue(String header) {
|
||||
for (String h : headers) {
|
||||
if (h.contains(":")) {
|
||||
String keyval[] = h.split(":");
|
||||
String key = keyval[0].trim().toLowerCase();
|
||||
String val = keyval[1].trim();
|
||||
if (header.toLowerCase().equals(key)) {
|
||||
return val;
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public HttpResponseInfo(InputStream is) throws IOException {
|
||||
IndexInputStream iis = new IndexInputStream(is);
|
||||
payload_size = iis.readUInt32();
|
||||
flags = iis.readInt();
|
||||
version = (int) (flags & RESPONSE_INFO_VERSION_MASK);
|
||||
if (version < RESPONSE_INFO_MINIMUM_VERSION || version > RESPONSE_INFO_VERSION) {
|
||||
throw new RuntimeException("unexpected response info version: " + version);
|
||||
}
|
||||
request_time = iis.readInt64();
|
||||
response_time = iis.readInt64();
|
||||
String headersStr = iis.readString();
|
||||
headers = new ArrayList<>();
|
||||
int nulpos;
|
||||
while ((nulpos = headersStr.indexOf(0)) > 0) {
|
||||
String h = headersStr.substring(0, nulpos);
|
||||
headersStr = headersStr.substring(nulpos + 1);
|
||||
headers.add(h);
|
||||
}
|
||||
|
||||
//TODO: Read SSL info
|
||||
}
|
||||
}
|
||||
/*
|
||||
* Copyright (C) 2010-2015 JPEXS
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.jpexs.browsers.cache.chrome;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author JPEXS
|
||||
*/
|
||||
public class HttpResponseInfo {
|
||||
|
||||
public long flags;
|
||||
public int version;
|
||||
public long request_time;
|
||||
public long response_time;
|
||||
public long payload_size;
|
||||
public List<String> headers;
|
||||
// The version of the response info used when persisting response info.
|
||||
public static final int RESPONSE_INFO_VERSION = 3;
|
||||
// The minimum version supported for deserializing response info.
|
||||
public static final int RESPONSE_INFO_MINIMUM_VERSION = 1;
|
||||
// We reserve up to 8 bits for the version number.
|
||||
public static final int RESPONSE_INFO_VERSION_MASK = 0xFF;
|
||||
// This bit is set if the response info has a cert at the end.
|
||||
// Version 1 serialized only the end-entity certificate, while subsequent
|
||||
// versions include the available certificate chain.
|
||||
public static final int RESPONSE_INFO_HAS_CERT = 1 << 8;
|
||||
// This bit is set if the response info has a security-bits field (security
|
||||
// strength, in bits, of the SSL connection) at the end.
|
||||
public static final int RESPONSE_INFO_HAS_SECURITY_BITS = 1 << 9;
|
||||
// This bit is set if the response info has a cert status at the end.
|
||||
public static final int RESPONSE_INFO_HAS_CERT_STATUS = 1 << 10;
|
||||
// This bit is set if the response info has vary header data.
|
||||
public static final int RESPONSE_INFO_HAS_VARY_DATA = 1 << 11;
|
||||
// This bit is set if the request was cancelled before completion.
|
||||
public static final int RESPONSE_INFO_TRUNCATED = 1 << 12;
|
||||
// This bit is set if the response was received via SPDY.
|
||||
public static final int RESPONSE_INFO_WAS_SPDY = 1 << 13;
|
||||
// This bit is set if the request has NPN negotiated.
|
||||
public static final int RESPONSE_INFO_WAS_NPN = 1 << 14;
|
||||
// This bit is set if the request was fetched via an explicit proxy.
|
||||
public static final int RESPONSE_INFO_WAS_PROXY = 1 << 15;
|
||||
// This bit is set if the response info has an SSL connection status field.
|
||||
// This contains the ciphersuite used to fetch the resource as well as the
|
||||
// protocol version, compression method and whether SSLv3 fallback was used.
|
||||
public static final int RESPONSE_INFO_HAS_SSL_CONNECTION_STATUS = 1 << 16;
|
||||
// This bit is set if the response info has protocol version.
|
||||
public static final int RESPONSE_INFO_HAS_NPN_NEGOTIATED_PROTOCOL = 1 << 17;
|
||||
// This bit is set if the response info has connection info.
|
||||
public static final int RESPONSE_INFO_HAS_CONNECTION_INFO = 1 << 18;
|
||||
// This bit is set if the request has http authentication.
|
||||
public static final int RESPONSE_INFO_USE_HTTP_AUTHENTICATION = 1 << 19;
|
||||
|
||||
public String getHeaderValue(String header) {
|
||||
for (String h : headers) {
|
||||
if (h.contains(":")) {
|
||||
String keyval[] = h.split(":");
|
||||
String key = keyval[0].trim().toLowerCase();
|
||||
String val = keyval[1].trim();
|
||||
if (header.toLowerCase().equals(key)) {
|
||||
return val;
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public HttpResponseInfo(InputStream is) throws IOException {
|
||||
IndexInputStream iis = new IndexInputStream(is);
|
||||
payload_size = iis.readUInt32();
|
||||
flags = iis.readInt();
|
||||
version = (int) (flags & RESPONSE_INFO_VERSION_MASK);
|
||||
if (version < RESPONSE_INFO_MINIMUM_VERSION || version > RESPONSE_INFO_VERSION) {
|
||||
throw new RuntimeException("unexpected response info version: " + version);
|
||||
}
|
||||
request_time = iis.readInt64();
|
||||
response_time = iis.readInt64();
|
||||
String headersStr = iis.readString();
|
||||
headers = new ArrayList<>();
|
||||
int nulpos;
|
||||
while ((nulpos = headersStr.indexOf(0)) > 0) {
|
||||
String h = headersStr.substring(0, nulpos);
|
||||
headersStr = headersStr.substring(nulpos + 1);
|
||||
headers.add(h);
|
||||
}
|
||||
|
||||
//TODO: Read SSL info
|
||||
}
|
||||
}
|
||||
|
||||
+79
-79
@@ -1,79 +1,79 @@
|
||||
/*
|
||||
* Copyright (C) 2010-2014 JPEXS
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.jpexs.browsers.cache.chrome;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.RandomAccessFile;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author JPEXS
|
||||
*/
|
||||
public class Index {
|
||||
|
||||
IndexHeader header;
|
||||
CacheAddr table[];
|
||||
public static final int kIndexTablesize = 0x10000;
|
||||
public File rootDir;
|
||||
private final Map<Integer, RandomAccessFile> dataFiles;
|
||||
private final File externalFilesDir;
|
||||
|
||||
public void free() {
|
||||
for (RandomAccessFile r : dataFiles.values()) {
|
||||
try {
|
||||
r.close();
|
||||
} catch (IOException ex) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public List<EntryStore> getEntries() throws IOException {
|
||||
List<EntryStore> ret = new ArrayList<>();
|
||||
for (CacheAddr ca : table) {
|
||||
InputStream is = ca.getInputStream();
|
||||
if (is != null) {
|
||||
EntryStore es = new EntryStore(is, rootDir, dataFiles, externalFilesDir);
|
||||
ret.add(es);
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
public Index(File file, File externalFilesDir) throws IOException {
|
||||
dataFiles = new HashMap<>();
|
||||
this.externalFilesDir = externalFilesDir;
|
||||
try (FileInputStream is = new FileInputStream(file)) {
|
||||
rootDir = file.getParentFile();
|
||||
header = new IndexHeader(is, rootDir, dataFiles, externalFilesDir);
|
||||
int tsize = kIndexTablesize;
|
||||
if (header.table_len > 0) {
|
||||
tsize = header.table_len;
|
||||
}
|
||||
table = new CacheAddr[tsize];
|
||||
for (int i = 0; i < tsize; i++) {
|
||||
table[i] = new CacheAddr(is, rootDir, dataFiles, externalFilesDir);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
/*
|
||||
* Copyright (C) 2010-2015 JPEXS
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.jpexs.browsers.cache.chrome;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.RandomAccessFile;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author JPEXS
|
||||
*/
|
||||
public class Index {
|
||||
|
||||
IndexHeader header;
|
||||
CacheAddr table[];
|
||||
public static final int kIndexTablesize = 0x10000;
|
||||
public File rootDir;
|
||||
private final Map<Integer, RandomAccessFile> dataFiles;
|
||||
private final File externalFilesDir;
|
||||
|
||||
public void free() {
|
||||
for (RandomAccessFile r : dataFiles.values()) {
|
||||
try {
|
||||
r.close();
|
||||
} catch (IOException ex) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public List<EntryStore> getEntries() throws IOException {
|
||||
List<EntryStore> ret = new ArrayList<>();
|
||||
for (CacheAddr ca : table) {
|
||||
InputStream is = ca.getInputStream();
|
||||
if (is != null) {
|
||||
EntryStore es = new EntryStore(is, rootDir, dataFiles, externalFilesDir);
|
||||
ret.add(es);
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
public Index(File file, File externalFilesDir) throws IOException {
|
||||
dataFiles = new HashMap<>();
|
||||
this.externalFilesDir = externalFilesDir;
|
||||
try (FileInputStream is = new FileInputStream(file)) {
|
||||
rootDir = file.getParentFile();
|
||||
header = new IndexHeader(is, rootDir, dataFiles, externalFilesDir);
|
||||
int tsize = kIndexTablesize;
|
||||
if (header.table_len > 0) {
|
||||
tsize = header.table_len;
|
||||
}
|
||||
table = new CacheAddr[tsize];
|
||||
for (int i = 0; i < tsize; i++) {
|
||||
table[i] = new CacheAddr(is, rootDir, dataFiles, externalFilesDir);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+64
-64
@@ -1,64 +1,64 @@
|
||||
/*
|
||||
* Copyright (C) 2010-2014 JPEXS
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.jpexs.browsers.cache.chrome;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.RandomAccessFile;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author JPEXS
|
||||
*/
|
||||
public class IndexHeader {
|
||||
|
||||
long magic; //c3 ca 03 c1
|
||||
long version; //01 00 02 00
|
||||
int num_entries;
|
||||
int num_bytes;
|
||||
int last_file;
|
||||
int this_id;
|
||||
CacheAddr stats;
|
||||
int table_len;
|
||||
int crash;
|
||||
int experiment;
|
||||
long create_time;
|
||||
int pad[] = new int[52];
|
||||
LruData lru;
|
||||
|
||||
public IndexHeader(InputStream is, File rootDir, Map<Integer, RandomAccessFile> dataFiles, File externalFilesDir) throws IOException {
|
||||
IndexInputStream iis = new IndexInputStream(is);
|
||||
magic = iis.readUInt32();
|
||||
version = iis.readUInt32();
|
||||
num_entries = iis.readInt32();
|
||||
num_bytes = iis.readInt32();
|
||||
last_file = iis.readInt32();
|
||||
this_id = iis.readInt32();
|
||||
stats = new CacheAddr(iis, rootDir, dataFiles, externalFilesDir);
|
||||
table_len = iis.readInt32();
|
||||
crash = iis.readInt32();
|
||||
experiment = iis.readInt32();
|
||||
create_time = iis.readUInt64();
|
||||
pad = new int[52];
|
||||
for (int i = 0; i < 52; i++) {
|
||||
pad[i] = iis.readInt32();
|
||||
}
|
||||
lru = new LruData(is, rootDir, dataFiles, externalFilesDir);
|
||||
}
|
||||
}
|
||||
/*
|
||||
* Copyright (C) 2010-2015 JPEXS
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.jpexs.browsers.cache.chrome;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.RandomAccessFile;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author JPEXS
|
||||
*/
|
||||
public class IndexHeader {
|
||||
|
||||
long magic; //c3 ca 03 c1
|
||||
long version; //01 00 02 00
|
||||
int num_entries;
|
||||
int num_bytes;
|
||||
int last_file;
|
||||
int this_id;
|
||||
CacheAddr stats;
|
||||
int table_len;
|
||||
int crash;
|
||||
int experiment;
|
||||
long create_time;
|
||||
int pad[] = new int[52];
|
||||
LruData lru;
|
||||
|
||||
public IndexHeader(InputStream is, File rootDir, Map<Integer, RandomAccessFile> dataFiles, File externalFilesDir) throws IOException {
|
||||
IndexInputStream iis = new IndexInputStream(is);
|
||||
magic = iis.readUInt32();
|
||||
version = iis.readUInt32();
|
||||
num_entries = iis.readInt32();
|
||||
num_bytes = iis.readInt32();
|
||||
last_file = iis.readInt32();
|
||||
this_id = iis.readInt32();
|
||||
stats = new CacheAddr(iis, rootDir, dataFiles, externalFilesDir);
|
||||
table_len = iis.readInt32();
|
||||
crash = iis.readInt32();
|
||||
experiment = iis.readInt32();
|
||||
create_time = iis.readUInt64();
|
||||
pad = new int[52];
|
||||
for (int i = 0; i < 52; i++) {
|
||||
pad[i] = iis.readInt32();
|
||||
}
|
||||
lru = new LruData(is, rootDir, dataFiles, externalFilesDir);
|
||||
}
|
||||
}
|
||||
|
||||
+79
-79
@@ -1,79 +1,79 @@
|
||||
/*
|
||||
* Copyright (C) 2010-2014 JPEXS
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.jpexs.browsers.cache.chrome;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author JPEXS
|
||||
*/
|
||||
public class IndexInputStream extends InputStream {
|
||||
|
||||
private final InputStream is;
|
||||
public long pos = 0;
|
||||
|
||||
public long getPos() {
|
||||
return pos;
|
||||
}
|
||||
|
||||
public IndexInputStream(InputStream is) {
|
||||
this.is = is;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int read() throws IOException {
|
||||
int r = is.read();
|
||||
//System.out.print("$"+Integer.toHexString(r));
|
||||
pos++;
|
||||
return r;
|
||||
}
|
||||
|
||||
public long readUInt32() throws IOException {
|
||||
long r = (((long) read()) + ((long) (read() << 8)) + ((long) (read() << 16)) + ((long) (read() << 24))) & 0xffffffffL;
|
||||
//System.out.println("");
|
||||
return r;
|
||||
}
|
||||
|
||||
public long readUInt64() throws IOException {
|
||||
return readUInt32() + (readUInt32() << 32);
|
||||
}
|
||||
|
||||
public long readInt64() throws IOException {
|
||||
return readUInt64(); //FIXME
|
||||
}
|
||||
|
||||
public int readInt32() throws IOException {
|
||||
return (int) readUInt32();
|
||||
}
|
||||
|
||||
public int readInt16() throws IOException {
|
||||
return (short) ((int) read() + (int) (read() << 8));
|
||||
}
|
||||
|
||||
public long readInt() throws IOException {
|
||||
return readInt32();
|
||||
}
|
||||
|
||||
public String readString() throws IOException {
|
||||
int len = (int) readInt();
|
||||
byte data[] = new byte[len];
|
||||
read(data);
|
||||
return new String(data);
|
||||
}
|
||||
}
|
||||
/*
|
||||
* Copyright (C) 2010-2015 JPEXS
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.jpexs.browsers.cache.chrome;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author JPEXS
|
||||
*/
|
||||
public class IndexInputStream extends InputStream {
|
||||
|
||||
private final InputStream is;
|
||||
public long pos = 0;
|
||||
|
||||
public long getPos() {
|
||||
return pos;
|
||||
}
|
||||
|
||||
public IndexInputStream(InputStream is) {
|
||||
this.is = is;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int read() throws IOException {
|
||||
int r = is.read();
|
||||
//System.out.print("$"+Integer.toHexString(r));
|
||||
pos++;
|
||||
return r;
|
||||
}
|
||||
|
||||
public long readUInt32() throws IOException {
|
||||
long r = (((long) read()) + ((long) (read() << 8)) + ((long) (read() << 16)) + ((long) (read() << 24))) & 0xffffffffL;
|
||||
//System.out.println("");
|
||||
return r;
|
||||
}
|
||||
|
||||
public long readUInt64() throws IOException {
|
||||
return readUInt32() + (readUInt32() << 32);
|
||||
}
|
||||
|
||||
public long readInt64() throws IOException {
|
||||
return readUInt64(); //FIXME
|
||||
}
|
||||
|
||||
public int readInt32() throws IOException {
|
||||
return (int) readUInt32();
|
||||
}
|
||||
|
||||
public int readInt16() throws IOException {
|
||||
return (short) ((int) read() + (int) (read() << 8));
|
||||
}
|
||||
|
||||
public long readInt() throws IOException {
|
||||
return readInt32();
|
||||
}
|
||||
|
||||
public String readString() throws IOException {
|
||||
int len = (int) readInt();
|
||||
byte data[] = new byte[len];
|
||||
read(data);
|
||||
return new String(data);
|
||||
}
|
||||
}
|
||||
|
||||
+71
-71
@@ -1,71 +1,71 @@
|
||||
/*
|
||||
* Copyright (C) 2010-2014 JPEXS
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.jpexs.browsers.cache.chrome;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.RandomAccessFile;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author JPEXS
|
||||
*/
|
||||
public class LruData {
|
||||
|
||||
int pad1[] = new int[2];
|
||||
int filled;
|
||||
int sizes[] = new int[5];
|
||||
CacheAddr heads[] = new CacheAddr[5];
|
||||
CacheAddr tails[] = new CacheAddr[5];
|
||||
CacheAddr transaction;
|
||||
int operation;
|
||||
int operation_list;
|
||||
int pad2[] = new int[7];
|
||||
|
||||
public LruData(InputStream is, File rootDir, Map<Integer, RandomAccessFile> dataFiles, File externalFilesDir) throws IOException {
|
||||
IndexInputStream iis = new IndexInputStream(is);
|
||||
pad1 = new int[2];
|
||||
pad1[0] = iis.readInt32();
|
||||
pad1[1] = iis.readInt32();
|
||||
filled = iis.readInt32();
|
||||
sizes = new int[5];
|
||||
for (int i = 0; i < 5; i++) {
|
||||
sizes[i] = iis.readInt32();
|
||||
}
|
||||
sizes = new int[5];
|
||||
for (int i = 0; i < 5; i++) {
|
||||
sizes[i] = iis.readInt32();
|
||||
}
|
||||
heads = new CacheAddr[5];
|
||||
for (int i = 0; i < 5; i++) {
|
||||
heads[i] = new CacheAddr(is, rootDir, dataFiles, externalFilesDir);
|
||||
}
|
||||
tails = new CacheAddr[5];
|
||||
for (int i = 0; i < 5; i++) {
|
||||
tails[i] = new CacheAddr(is, rootDir, dataFiles, externalFilesDir);
|
||||
}
|
||||
transaction = new CacheAddr(is, rootDir, dataFiles, externalFilesDir);
|
||||
operation = iis.readInt32();
|
||||
operation_list = iis.readInt32();
|
||||
pad2 = new int[7];
|
||||
for (int i = 0; i < 7; i++) {
|
||||
pad2[i] = iis.readInt32();
|
||||
}
|
||||
}
|
||||
}
|
||||
/*
|
||||
* Copyright (C) 2010-2015 JPEXS
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.jpexs.browsers.cache.chrome;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.RandomAccessFile;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author JPEXS
|
||||
*/
|
||||
public class LruData {
|
||||
|
||||
int pad1[] = new int[2];
|
||||
int filled;
|
||||
int sizes[] = new int[5];
|
||||
CacheAddr heads[] = new CacheAddr[5];
|
||||
CacheAddr tails[] = new CacheAddr[5];
|
||||
CacheAddr transaction;
|
||||
int operation;
|
||||
int operation_list;
|
||||
int pad2[] = new int[7];
|
||||
|
||||
public LruData(InputStream is, File rootDir, Map<Integer, RandomAccessFile> dataFiles, File externalFilesDir) throws IOException {
|
||||
IndexInputStream iis = new IndexInputStream(is);
|
||||
pad1 = new int[2];
|
||||
pad1[0] = iis.readInt32();
|
||||
pad1[1] = iis.readInt32();
|
||||
filled = iis.readInt32();
|
||||
sizes = new int[5];
|
||||
for (int i = 0; i < 5; i++) {
|
||||
sizes[i] = iis.readInt32();
|
||||
}
|
||||
sizes = new int[5];
|
||||
for (int i = 0; i < 5; i++) {
|
||||
sizes[i] = iis.readInt32();
|
||||
}
|
||||
heads = new CacheAddr[5];
|
||||
for (int i = 0; i < 5; i++) {
|
||||
heads[i] = new CacheAddr(is, rootDir, dataFiles, externalFilesDir);
|
||||
}
|
||||
tails = new CacheAddr[5];
|
||||
for (int i = 0; i < 5; i++) {
|
||||
tails[i] = new CacheAddr(is, rootDir, dataFiles, externalFilesDir);
|
||||
}
|
||||
transaction = new CacheAddr(is, rootDir, dataFiles, externalFilesDir);
|
||||
operation = iis.readInt32();
|
||||
operation_list = iis.readInt32();
|
||||
pad2 = new int[7];
|
||||
for (int i = 0; i < 7; i++) {
|
||||
pad2[i] = iis.readInt32();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+32
-32
@@ -1,32 +1,32 @@
|
||||
/*
|
||||
* Copyright (C) 2010-2014 JPEXS
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.jpexs.browsers.cache.chrome;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author JPEXS
|
||||
*/
|
||||
public class RankingsNode {
|
||||
|
||||
public long last_used;
|
||||
public long last_modified;
|
||||
CacheAddr next;
|
||||
CacheAddr prev;
|
||||
CacheAddr contents;
|
||||
int dirty;
|
||||
long self_hash;
|
||||
}
|
||||
/*
|
||||
* Copyright (C) 2010-2015 JPEXS
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.jpexs.browsers.cache.chrome;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author JPEXS
|
||||
*/
|
||||
public class RankingsNode {
|
||||
|
||||
public long last_used;
|
||||
public long last_modified;
|
||||
CacheAddr next;
|
||||
CacheAddr prev;
|
||||
CacheAddr contents;
|
||||
int dirty;
|
||||
long self_hash;
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2010-2014 JPEXS
|
||||
* Copyright (C) 2010-2015 JPEXS
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2014-2015 JPEXS
|
||||
* Copyright (C) 2010-2015 JPEXS
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2014-2015 JPEXS
|
||||
* Copyright (C) 2010-2015 JPEXS
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2014-2015 JPEXS
|
||||
* Copyright (C) 2010-2015 JPEXS
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2014-2015 JPEXS
|
||||
* Copyright (C) 2010-2015 JPEXS
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2014-2015 JPEXS
|
||||
* Copyright (C) 2010-2015 JPEXS
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2014-2015 JPEXS
|
||||
* Copyright (C) 2010-2015 JPEXS
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2014-2015 JPEXS
|
||||
* Copyright (C) 2010-2015 JPEXS
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2014-2015 JPEXS
|
||||
* Copyright (C) 2010-2015 JPEXS
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2014-2015 JPEXS
|
||||
* Copyright (C) 2010-2015 JPEXS
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2014-2015 JPEXS
|
||||
* Copyright (C) 2010-2015 JPEXS
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2014-2015 JPEXS
|
||||
* Copyright (C) 2010-2015 JPEXS
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -1,153 +1,153 @@
|
||||
/*
|
||||
* Copyright (C) 2010-2014 JPEXS
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.jpexs.decompiler.flash.gui.abc.tablemodels;
|
||||
|
||||
import com.jpexs.decompiler.flash.abc.ABC;
|
||||
import javax.swing.event.TableModelListener;
|
||||
import javax.swing.table.TableModel;
|
||||
|
||||
public class DecimalTableModel implements TableModel {
|
||||
|
||||
private final ABC abc;
|
||||
private static final String[] columnNames = new String[]{"Index", "Value"};
|
||||
private static final Class[] classes = new Class[]{Long.class, String.class};
|
||||
|
||||
public DecimalTableModel(ABC abc) {
|
||||
this.abc = abc;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the number of rows in the model. A <code>JTable</code> uses this
|
||||
* method to determine how many rows it should display. This method should
|
||||
* be quick, as it is called frequently during rendering.
|
||||
*
|
||||
* @return the number of rows in the model
|
||||
* @see #getColumnCount
|
||||
*/
|
||||
@Override
|
||||
public int getRowCount() {
|
||||
if (abc == null) {
|
||||
return 0;
|
||||
}
|
||||
return abc.constants.getDecimalCount();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the number of columns in the model. A <code>JTable</code> uses
|
||||
* this method to determine how many columns it should create and display by
|
||||
* default.
|
||||
*
|
||||
* @return the number of columns in the model
|
||||
* @see #getRowCount
|
||||
*/
|
||||
@Override
|
||||
public int getColumnCount() {
|
||||
return 2;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the name of the column at <code>columnIndex</code>. This is used
|
||||
* to initialize the table's column header name. Note: this name does not
|
||||
* need to be unique; two columns in a table can have the same name.
|
||||
*
|
||||
* @param columnIndex the index of the column
|
||||
* @return the name of the column
|
||||
*/
|
||||
@Override
|
||||
public String getColumnName(int columnIndex) {
|
||||
return columnNames[columnIndex];
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the most specific superclass for all the cell values in the
|
||||
* column. This is used by the <code>JTable</code> to set up a default
|
||||
* renderer and editor for the column.
|
||||
*
|
||||
* @param columnIndex the index of the column
|
||||
* @return the common ancestor class of the object values in the model.
|
||||
*/
|
||||
@Override
|
||||
public Class<?> getColumnClass(int columnIndex) {
|
||||
return classes[columnIndex];
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns true if the cell at <code>rowIndex</code> and
|
||||
* <code>columnIndex</code> is editable. Otherwise, <code>setValueAt</code>
|
||||
* on the cell will not change the value of that cell.
|
||||
*
|
||||
* @param rowIndex the row whose value to be queried
|
||||
* @param columnIndex the column whose value to be queried
|
||||
* @return true if the cell is editable
|
||||
* @see #setValueAt
|
||||
*/
|
||||
@Override
|
||||
public boolean isCellEditable(int rowIndex, int columnIndex) {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the value for the cell at <code>columnIndex</code> and
|
||||
* <code>rowIndex</code>.
|
||||
*
|
||||
* @param rowIndex the row whose value is to be queried
|
||||
* @param columnIndex the column whose value is to be queried
|
||||
* @return the value Object at the specified cell
|
||||
*/
|
||||
@Override
|
||||
public Object getValueAt(int rowIndex, int columnIndex) {
|
||||
if (columnIndex == 0) {
|
||||
return rowIndex;
|
||||
} else {
|
||||
return abc.constants.getDecimal(rowIndex);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value in the cell at <code>columnIndex</code> and
|
||||
* <code>rowIndex</code> to <code>aValue</code>.
|
||||
*
|
||||
* @param aValue the new value
|
||||
* @param rowIndex the row whose value is to be changed
|
||||
* @param columnIndex the column whose value is to be changed
|
||||
* @see #getValueAt
|
||||
* @see #isCellEditable
|
||||
*/
|
||||
@Override
|
||||
public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds a listener to the list that is notified each time a change to the
|
||||
* data model occurs.
|
||||
*
|
||||
* @param l the TableModelListener
|
||||
*/
|
||||
@Override
|
||||
public void addTableModelListener(TableModelListener l) {
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes a listener from the list that is notified each time a change to
|
||||
* the data model occurs.
|
||||
*
|
||||
* @param l the TableModelListener
|
||||
*/
|
||||
@Override
|
||||
public void removeTableModelListener(TableModelListener l) {
|
||||
}
|
||||
}
|
||||
/*
|
||||
* Copyright (C) 2010-2015 JPEXS
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.jpexs.decompiler.flash.gui.abc.tablemodels;
|
||||
|
||||
import com.jpexs.decompiler.flash.abc.ABC;
|
||||
import javax.swing.event.TableModelListener;
|
||||
import javax.swing.table.TableModel;
|
||||
|
||||
public class DecimalTableModel implements TableModel {
|
||||
|
||||
private final ABC abc;
|
||||
private static final String[] columnNames = new String[]{"Index", "Value"};
|
||||
private static final Class[] classes = new Class[]{Long.class, String.class};
|
||||
|
||||
public DecimalTableModel(ABC abc) {
|
||||
this.abc = abc;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the number of rows in the model. A <code>JTable</code> uses this
|
||||
* method to determine how many rows it should display. This method should
|
||||
* be quick, as it is called frequently during rendering.
|
||||
*
|
||||
* @return the number of rows in the model
|
||||
* @see #getColumnCount
|
||||
*/
|
||||
@Override
|
||||
public int getRowCount() {
|
||||
if (abc == null) {
|
||||
return 0;
|
||||
}
|
||||
return abc.constants.getDecimalCount();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the number of columns in the model. A <code>JTable</code> uses
|
||||
* this method to determine how many columns it should create and display by
|
||||
* default.
|
||||
*
|
||||
* @return the number of columns in the model
|
||||
* @see #getRowCount
|
||||
*/
|
||||
@Override
|
||||
public int getColumnCount() {
|
||||
return 2;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the name of the column at <code>columnIndex</code>. This is used
|
||||
* to initialize the table's column header name. Note: this name does not
|
||||
* need to be unique; two columns in a table can have the same name.
|
||||
*
|
||||
* @param columnIndex the index of the column
|
||||
* @return the name of the column
|
||||
*/
|
||||
@Override
|
||||
public String getColumnName(int columnIndex) {
|
||||
return columnNames[columnIndex];
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the most specific superclass for all the cell values in the
|
||||
* column. This is used by the <code>JTable</code> to set up a default
|
||||
* renderer and editor for the column.
|
||||
*
|
||||
* @param columnIndex the index of the column
|
||||
* @return the common ancestor class of the object values in the model.
|
||||
*/
|
||||
@Override
|
||||
public Class<?> getColumnClass(int columnIndex) {
|
||||
return classes[columnIndex];
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns true if the cell at <code>rowIndex</code> and
|
||||
* <code>columnIndex</code> is editable. Otherwise, <code>setValueAt</code>
|
||||
* on the cell will not change the value of that cell.
|
||||
*
|
||||
* @param rowIndex the row whose value to be queried
|
||||
* @param columnIndex the column whose value to be queried
|
||||
* @return true if the cell is editable
|
||||
* @see #setValueAt
|
||||
*/
|
||||
@Override
|
||||
public boolean isCellEditable(int rowIndex, int columnIndex) {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the value for the cell at <code>columnIndex</code> and
|
||||
* <code>rowIndex</code>.
|
||||
*
|
||||
* @param rowIndex the row whose value is to be queried
|
||||
* @param columnIndex the column whose value is to be queried
|
||||
* @return the value Object at the specified cell
|
||||
*/
|
||||
@Override
|
||||
public Object getValueAt(int rowIndex, int columnIndex) {
|
||||
if (columnIndex == 0) {
|
||||
return rowIndex;
|
||||
} else {
|
||||
return abc.constants.getDecimal(rowIndex);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value in the cell at <code>columnIndex</code> and
|
||||
* <code>rowIndex</code> to <code>aValue</code>.
|
||||
*
|
||||
* @param aValue the new value
|
||||
* @param rowIndex the row whose value is to be changed
|
||||
* @param columnIndex the column whose value is to be changed
|
||||
* @see #getValueAt
|
||||
* @see #isCellEditable
|
||||
*/
|
||||
@Override
|
||||
public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds a listener to the list that is notified each time a change to the
|
||||
* data model occurs.
|
||||
*
|
||||
* @param l the TableModelListener
|
||||
*/
|
||||
@Override
|
||||
public void addTableModelListener(TableModelListener l) {
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes a listener from the list that is notified each time a change to
|
||||
* the data model occurs.
|
||||
*
|
||||
* @param l the TableModelListener
|
||||
*/
|
||||
@Override
|
||||
public void removeTableModelListener(TableModelListener l) {
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2010-2014 JPEXS
|
||||
* Copyright (C) 2010-2015 JPEXS
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -1,153 +1,153 @@
|
||||
/*
|
||||
* Copyright (C) 2010-2014 JPEXS
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.jpexs.decompiler.flash.gui.abc.tablemodels;
|
||||
|
||||
import com.jpexs.decompiler.flash.abc.ABC;
|
||||
import javax.swing.event.TableModelListener;
|
||||
import javax.swing.table.TableModel;
|
||||
|
||||
public class IntTableModel implements TableModel {
|
||||
|
||||
private final ABC abc;
|
||||
private static final String[] columnNames = new String[]{"Index", "Value"};
|
||||
private static final Class[] classes = new Class[]{Long.class, Long.class};
|
||||
|
||||
public IntTableModel(ABC abc) {
|
||||
this.abc = abc;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the number of rows in the model. A <code>JTable</code> uses this
|
||||
* method to determine how many rows it should display. This method should
|
||||
* be quick, as it is called frequently during rendering.
|
||||
*
|
||||
* @return the number of rows in the model
|
||||
* @see #getColumnCount
|
||||
*/
|
||||
@Override
|
||||
public int getRowCount() {
|
||||
if (abc == null) {
|
||||
return 0;
|
||||
}
|
||||
return abc.constants.getIntCount();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the number of columns in the model. A <code>JTable</code> uses
|
||||
* this method to determine how many columns it should create and display by
|
||||
* default.
|
||||
*
|
||||
* @return the number of columns in the model
|
||||
* @see #getRowCount
|
||||
*/
|
||||
@Override
|
||||
public int getColumnCount() {
|
||||
return 2;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the name of the column at <code>columnIndex</code>. This is used
|
||||
* to initialize the table's column header name. Note: this name does not
|
||||
* need to be unique; two columns in a table can have the same name.
|
||||
*
|
||||
* @param columnIndex the index of the column
|
||||
* @return the name of the column
|
||||
*/
|
||||
@Override
|
||||
public String getColumnName(int columnIndex) {
|
||||
return columnNames[columnIndex];
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the most specific superclass for all the cell values in the
|
||||
* column. This is used by the <code>JTable</code> to set up a default
|
||||
* renderer and editor for the column.
|
||||
*
|
||||
* @param columnIndex the index of the column
|
||||
* @return the common ancestor class of the object values in the model.
|
||||
*/
|
||||
@Override
|
||||
public Class<?> getColumnClass(int columnIndex) {
|
||||
return classes[columnIndex];
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns true if the cell at <code>rowIndex</code> and
|
||||
* <code>columnIndex</code> is editable. Otherwise, <code>setValueAt</code>
|
||||
* on the cell will not change the value of that cell.
|
||||
*
|
||||
* @param rowIndex the row whose value to be queried
|
||||
* @param columnIndex the column whose value to be queried
|
||||
* @return true if the cell is editable
|
||||
* @see #setValueAt
|
||||
*/
|
||||
@Override
|
||||
public boolean isCellEditable(int rowIndex, int columnIndex) {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the value for the cell at <code>columnIndex</code> and
|
||||
* <code>rowIndex</code>.
|
||||
*
|
||||
* @param rowIndex the row whose value is to be queried
|
||||
* @param columnIndex the column whose value is to be queried
|
||||
* @return the value Object at the specified cell
|
||||
*/
|
||||
@Override
|
||||
public Object getValueAt(int rowIndex, int columnIndex) {
|
||||
if (columnIndex == 0) {
|
||||
return rowIndex;
|
||||
} else {
|
||||
return abc.constants.getInt(rowIndex);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value in the cell at <code>columnIndex</code> and
|
||||
* <code>rowIndex</code> to <code>aValue</code>.
|
||||
*
|
||||
* @param aValue the new value
|
||||
* @param rowIndex the row whose value is to be changed
|
||||
* @param columnIndex the column whose value is to be changed
|
||||
* @see #getValueAt
|
||||
* @see #isCellEditable
|
||||
*/
|
||||
@Override
|
||||
public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds a listener to the list that is notified each time a change to the
|
||||
* data model occurs.
|
||||
*
|
||||
* @param l the TableModelListener
|
||||
*/
|
||||
@Override
|
||||
public void addTableModelListener(TableModelListener l) {
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes a listener from the list that is notified each time a change to
|
||||
* the data model occurs.
|
||||
*
|
||||
* @param l the TableModelListener
|
||||
*/
|
||||
@Override
|
||||
public void removeTableModelListener(TableModelListener l) {
|
||||
}
|
||||
}
|
||||
/*
|
||||
* Copyright (C) 2010-2015 JPEXS
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.jpexs.decompiler.flash.gui.abc.tablemodels;
|
||||
|
||||
import com.jpexs.decompiler.flash.abc.ABC;
|
||||
import javax.swing.event.TableModelListener;
|
||||
import javax.swing.table.TableModel;
|
||||
|
||||
public class IntTableModel implements TableModel {
|
||||
|
||||
private final ABC abc;
|
||||
private static final String[] columnNames = new String[]{"Index", "Value"};
|
||||
private static final Class[] classes = new Class[]{Long.class, Long.class};
|
||||
|
||||
public IntTableModel(ABC abc) {
|
||||
this.abc = abc;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the number of rows in the model. A <code>JTable</code> uses this
|
||||
* method to determine how many rows it should display. This method should
|
||||
* be quick, as it is called frequently during rendering.
|
||||
*
|
||||
* @return the number of rows in the model
|
||||
* @see #getColumnCount
|
||||
*/
|
||||
@Override
|
||||
public int getRowCount() {
|
||||
if (abc == null) {
|
||||
return 0;
|
||||
}
|
||||
return abc.constants.getIntCount();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the number of columns in the model. A <code>JTable</code> uses
|
||||
* this method to determine how many columns it should create and display by
|
||||
* default.
|
||||
*
|
||||
* @return the number of columns in the model
|
||||
* @see #getRowCount
|
||||
*/
|
||||
@Override
|
||||
public int getColumnCount() {
|
||||
return 2;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the name of the column at <code>columnIndex</code>. This is used
|
||||
* to initialize the table's column header name. Note: this name does not
|
||||
* need to be unique; two columns in a table can have the same name.
|
||||
*
|
||||
* @param columnIndex the index of the column
|
||||
* @return the name of the column
|
||||
*/
|
||||
@Override
|
||||
public String getColumnName(int columnIndex) {
|
||||
return columnNames[columnIndex];
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the most specific superclass for all the cell values in the
|
||||
* column. This is used by the <code>JTable</code> to set up a default
|
||||
* renderer and editor for the column.
|
||||
*
|
||||
* @param columnIndex the index of the column
|
||||
* @return the common ancestor class of the object values in the model.
|
||||
*/
|
||||
@Override
|
||||
public Class<?> getColumnClass(int columnIndex) {
|
||||
return classes[columnIndex];
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns true if the cell at <code>rowIndex</code> and
|
||||
* <code>columnIndex</code> is editable. Otherwise, <code>setValueAt</code>
|
||||
* on the cell will not change the value of that cell.
|
||||
*
|
||||
* @param rowIndex the row whose value to be queried
|
||||
* @param columnIndex the column whose value to be queried
|
||||
* @return true if the cell is editable
|
||||
* @see #setValueAt
|
||||
*/
|
||||
@Override
|
||||
public boolean isCellEditable(int rowIndex, int columnIndex) {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the value for the cell at <code>columnIndex</code> and
|
||||
* <code>rowIndex</code>.
|
||||
*
|
||||
* @param rowIndex the row whose value is to be queried
|
||||
* @param columnIndex the column whose value is to be queried
|
||||
* @return the value Object at the specified cell
|
||||
*/
|
||||
@Override
|
||||
public Object getValueAt(int rowIndex, int columnIndex) {
|
||||
if (columnIndex == 0) {
|
||||
return rowIndex;
|
||||
} else {
|
||||
return abc.constants.getInt(rowIndex);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value in the cell at <code>columnIndex</code> and
|
||||
* <code>rowIndex</code> to <code>aValue</code>.
|
||||
*
|
||||
* @param aValue the new value
|
||||
* @param rowIndex the row whose value is to be changed
|
||||
* @param columnIndex the column whose value is to be changed
|
||||
* @see #getValueAt
|
||||
* @see #isCellEditable
|
||||
*/
|
||||
@Override
|
||||
public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds a listener to the list that is notified each time a change to the
|
||||
* data model occurs.
|
||||
*
|
||||
* @param l the TableModelListener
|
||||
*/
|
||||
@Override
|
||||
public void addTableModelListener(TableModelListener l) {
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes a listener from the list that is notified each time a change to
|
||||
* the data model occurs.
|
||||
*
|
||||
* @param l the TableModelListener
|
||||
*/
|
||||
@Override
|
||||
public void removeTableModelListener(TableModelListener l) {
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2010-2014 JPEXS
|
||||
* Copyright (C) 2010-2015 JPEXS
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -1,159 +1,159 @@
|
||||
/*
|
||||
* Copyright (C) 2010-2014 JPEXS
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.jpexs.decompiler.flash.gui.abc.tablemodels;
|
||||
|
||||
import com.jpexs.decompiler.flash.abc.ABC;
|
||||
import javax.swing.event.TableModelListener;
|
||||
import javax.swing.table.TableModel;
|
||||
|
||||
public class NamespaceSetTableModel implements TableModel {
|
||||
|
||||
private final ABC abc;
|
||||
private static final String[] columnNames = new String[]{"Index", "NameSpaces"};
|
||||
private static final Class[] classes = new Class[]{Long.class, String.class, String.class};
|
||||
|
||||
public NamespaceSetTableModel(ABC abc) {
|
||||
this.abc = abc;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the number of rows in the model. A <code>JTable</code> uses this
|
||||
* method to determine how many rows it should display. This method should
|
||||
* be quick, as it is called frequently during rendering.
|
||||
*
|
||||
* @return the number of rows in the model
|
||||
* @see #getColumnCount
|
||||
*/
|
||||
@Override
|
||||
public int getRowCount() {
|
||||
if (abc == null) {
|
||||
return 0;
|
||||
}
|
||||
return abc.constants.getNamespaceSetCount();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the number of columns in the model. A <code>JTable</code> uses
|
||||
* this method to determine how many columns it should create and display by
|
||||
* default.
|
||||
*
|
||||
* @return the number of columns in the model
|
||||
* @see #getRowCount
|
||||
*/
|
||||
@Override
|
||||
public int getColumnCount() {
|
||||
return 2;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the name of the column at <code>columnIndex</code>. This is used
|
||||
* to initialize the table's column header name. Note: this name does not
|
||||
* need to be unique; two columns in a table can have the same name.
|
||||
*
|
||||
* @param columnIndex the index of the column
|
||||
* @return the name of the column
|
||||
*/
|
||||
@Override
|
||||
public String getColumnName(int columnIndex) {
|
||||
return columnNames[columnIndex];
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the most specific superclass for all the cell values in the
|
||||
* column. This is used by the <code>JTable</code> to set up a default
|
||||
* renderer and editor for the column.
|
||||
*
|
||||
* @param columnIndex the index of the column
|
||||
* @return the common ancestor class of the object values in the model.
|
||||
*/
|
||||
@Override
|
||||
public Class<?> getColumnClass(int columnIndex) {
|
||||
return classes[columnIndex];
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns true if the cell at <code>rowIndex</code> and
|
||||
* <code>columnIndex</code> is editable. Otherwise, <code>setValueAt</code>
|
||||
* on the cell will not change the value of that cell.
|
||||
*
|
||||
* @param rowIndex the row whose value to be queried
|
||||
* @param columnIndex the column whose value to be queried
|
||||
* @return true if the cell is editable
|
||||
* @see #setValueAt
|
||||
*/
|
||||
@Override
|
||||
public boolean isCellEditable(int rowIndex, int columnIndex) {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the value for the cell at <code>columnIndex</code> and
|
||||
* <code>rowIndex</code>.
|
||||
*
|
||||
* @param rowIndex the row whose value is to be queried
|
||||
* @param columnIndex the column whose value is to be queried
|
||||
* @return the value Object at the specified cell
|
||||
*/
|
||||
@Override
|
||||
public Object getValueAt(int rowIndex, int columnIndex) {
|
||||
switch (columnIndex) {
|
||||
case 0:
|
||||
return rowIndex;
|
||||
case 1:
|
||||
if (rowIndex == 0) {
|
||||
return "";
|
||||
}
|
||||
return abc.constants.getNamespaceSet(rowIndex).toString(abc.constants);
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value in the cell at <code>columnIndex</code> and
|
||||
* <code>rowIndex</code> to <code>aValue</code>.
|
||||
*
|
||||
* @param aValue the new value
|
||||
* @param rowIndex the row whose value is to be changed
|
||||
* @param columnIndex the column whose value is to be changed
|
||||
* @see #getValueAt
|
||||
* @see #isCellEditable
|
||||
*/
|
||||
@Override
|
||||
public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds a listener to the list that is notified each time a change to the
|
||||
* data model occurs.
|
||||
*
|
||||
* @param l the TableModelListener
|
||||
*/
|
||||
@Override
|
||||
public void addTableModelListener(TableModelListener l) {
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes a listener from the list that is notified each time a change to
|
||||
* the data model occurs.
|
||||
*
|
||||
* @param l the TableModelListener
|
||||
*/
|
||||
@Override
|
||||
public void removeTableModelListener(TableModelListener l) {
|
||||
}
|
||||
}
|
||||
/*
|
||||
* Copyright (C) 2010-2015 JPEXS
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.jpexs.decompiler.flash.gui.abc.tablemodels;
|
||||
|
||||
import com.jpexs.decompiler.flash.abc.ABC;
|
||||
import javax.swing.event.TableModelListener;
|
||||
import javax.swing.table.TableModel;
|
||||
|
||||
public class NamespaceSetTableModel implements TableModel {
|
||||
|
||||
private final ABC abc;
|
||||
private static final String[] columnNames = new String[]{"Index", "NameSpaces"};
|
||||
private static final Class[] classes = new Class[]{Long.class, String.class, String.class};
|
||||
|
||||
public NamespaceSetTableModel(ABC abc) {
|
||||
this.abc = abc;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the number of rows in the model. A <code>JTable</code> uses this
|
||||
* method to determine how many rows it should display. This method should
|
||||
* be quick, as it is called frequently during rendering.
|
||||
*
|
||||
* @return the number of rows in the model
|
||||
* @see #getColumnCount
|
||||
*/
|
||||
@Override
|
||||
public int getRowCount() {
|
||||
if (abc == null) {
|
||||
return 0;
|
||||
}
|
||||
return abc.constants.getNamespaceSetCount();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the number of columns in the model. A <code>JTable</code> uses
|
||||
* this method to determine how many columns it should create and display by
|
||||
* default.
|
||||
*
|
||||
* @return the number of columns in the model
|
||||
* @see #getRowCount
|
||||
*/
|
||||
@Override
|
||||
public int getColumnCount() {
|
||||
return 2;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the name of the column at <code>columnIndex</code>. This is used
|
||||
* to initialize the table's column header name. Note: this name does not
|
||||
* need to be unique; two columns in a table can have the same name.
|
||||
*
|
||||
* @param columnIndex the index of the column
|
||||
* @return the name of the column
|
||||
*/
|
||||
@Override
|
||||
public String getColumnName(int columnIndex) {
|
||||
return columnNames[columnIndex];
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the most specific superclass for all the cell values in the
|
||||
* column. This is used by the <code>JTable</code> to set up a default
|
||||
* renderer and editor for the column.
|
||||
*
|
||||
* @param columnIndex the index of the column
|
||||
* @return the common ancestor class of the object values in the model.
|
||||
*/
|
||||
@Override
|
||||
public Class<?> getColumnClass(int columnIndex) {
|
||||
return classes[columnIndex];
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns true if the cell at <code>rowIndex</code> and
|
||||
* <code>columnIndex</code> is editable. Otherwise, <code>setValueAt</code>
|
||||
* on the cell will not change the value of that cell.
|
||||
*
|
||||
* @param rowIndex the row whose value to be queried
|
||||
* @param columnIndex the column whose value to be queried
|
||||
* @return true if the cell is editable
|
||||
* @see #setValueAt
|
||||
*/
|
||||
@Override
|
||||
public boolean isCellEditable(int rowIndex, int columnIndex) {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the value for the cell at <code>columnIndex</code> and
|
||||
* <code>rowIndex</code>.
|
||||
*
|
||||
* @param rowIndex the row whose value is to be queried
|
||||
* @param columnIndex the column whose value is to be queried
|
||||
* @return the value Object at the specified cell
|
||||
*/
|
||||
@Override
|
||||
public Object getValueAt(int rowIndex, int columnIndex) {
|
||||
switch (columnIndex) {
|
||||
case 0:
|
||||
return rowIndex;
|
||||
case 1:
|
||||
if (rowIndex == 0) {
|
||||
return "";
|
||||
}
|
||||
return abc.constants.getNamespaceSet(rowIndex).toString(abc.constants);
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value in the cell at <code>columnIndex</code> and
|
||||
* <code>rowIndex</code> to <code>aValue</code>.
|
||||
*
|
||||
* @param aValue the new value
|
||||
* @param rowIndex the row whose value is to be changed
|
||||
* @param columnIndex the column whose value is to be changed
|
||||
* @see #getValueAt
|
||||
* @see #isCellEditable
|
||||
*/
|
||||
@Override
|
||||
public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds a listener to the list that is notified each time a change to the
|
||||
* data model occurs.
|
||||
*
|
||||
* @param l the TableModelListener
|
||||
*/
|
||||
@Override
|
||||
public void addTableModelListener(TableModelListener l) {
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes a listener from the list that is notified each time a change to
|
||||
* the data model occurs.
|
||||
*
|
||||
* @param l the TableModelListener
|
||||
*/
|
||||
@Override
|
||||
public void removeTableModelListener(TableModelListener l) {
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2010-2014 JPEXS
|
||||
* Copyright (C) 2010-2015 JPEXS
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -1,153 +1,153 @@
|
||||
/*
|
||||
* Copyright (C) 2010-2014 JPEXS
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.jpexs.decompiler.flash.gui.abc.tablemodels;
|
||||
|
||||
import com.jpexs.decompiler.flash.abc.ABC;
|
||||
import javax.swing.event.TableModelListener;
|
||||
import javax.swing.table.TableModel;
|
||||
|
||||
public class StringTableModel implements TableModel {
|
||||
|
||||
private final ABC abc;
|
||||
private static final String[] columnNames = new String[]{"Index", "Value"};
|
||||
private static final Class[] classes = new Class[]{Long.class, String.class};
|
||||
|
||||
public StringTableModel(ABC abc) {
|
||||
this.abc = abc;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the number of rows in the model. A <code>JTable</code> uses this
|
||||
* method to determine how many rows it should display. This method should
|
||||
* be quick, as it is called frequently during rendering.
|
||||
*
|
||||
* @return the number of rows in the model
|
||||
* @see #getColumnCount
|
||||
*/
|
||||
@Override
|
||||
public int getRowCount() {
|
||||
if (abc == null) {
|
||||
return 0;
|
||||
}
|
||||
return abc.constants.getStringCount();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the number of columns in the model. A <code>JTable</code> uses
|
||||
* this method to determine how many columns it should create and display by
|
||||
* default.
|
||||
*
|
||||
* @return the number of columns in the model
|
||||
* @see #getRowCount
|
||||
*/
|
||||
@Override
|
||||
public int getColumnCount() {
|
||||
return 2;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the name of the column at <code>columnIndex</code>. This is used
|
||||
* to initialize the table's column header name. Note: this name does not
|
||||
* need to be unique; two columns in a table can have the same name.
|
||||
*
|
||||
* @param columnIndex the index of the column
|
||||
* @return the name of the column
|
||||
*/
|
||||
@Override
|
||||
public String getColumnName(int columnIndex) {
|
||||
return columnNames[columnIndex];
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the most specific superclass for all the cell values in the
|
||||
* column. This is used by the <code>JTable</code> to set up a default
|
||||
* renderer and editor for the column.
|
||||
*
|
||||
* @param columnIndex the index of the column
|
||||
* @return the common ancestor class of the object values in the model.
|
||||
*/
|
||||
@Override
|
||||
public Class<?> getColumnClass(int columnIndex) {
|
||||
return classes[columnIndex];
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns true if the cell at <code>rowIndex</code> and
|
||||
* <code>columnIndex</code> is editable. Otherwise, <code>setValueAt</code>
|
||||
* on the cell will not change the value of that cell.
|
||||
*
|
||||
* @param rowIndex the row whose value to be queried
|
||||
* @param columnIndex the column whose value to be queried
|
||||
* @return true if the cell is editable
|
||||
* @see #setValueAt
|
||||
*/
|
||||
@Override
|
||||
public boolean isCellEditable(int rowIndex, int columnIndex) {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the value for the cell at <code>columnIndex</code> and
|
||||
* <code>rowIndex</code>.
|
||||
*
|
||||
* @param rowIndex the row whose value is to be queried
|
||||
* @param columnIndex the column whose value is to be queried
|
||||
* @return the value Object at the specified cell
|
||||
*/
|
||||
@Override
|
||||
public Object getValueAt(int rowIndex, int columnIndex) {
|
||||
if (columnIndex == 0) {
|
||||
return rowIndex;
|
||||
} else {
|
||||
return abc.constants.getString(rowIndex);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value in the cell at <code>columnIndex</code> and
|
||||
* <code>rowIndex</code> to <code>aValue</code>.
|
||||
*
|
||||
* @param aValue the new value
|
||||
* @param rowIndex the row whose value is to be changed
|
||||
* @param columnIndex the column whose value is to be changed
|
||||
* @see #getValueAt
|
||||
* @see #isCellEditable
|
||||
*/
|
||||
@Override
|
||||
public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds a listener to the list that is notified each time a change to the
|
||||
* data model occurs.
|
||||
*
|
||||
* @param l the TableModelListener
|
||||
*/
|
||||
@Override
|
||||
public void addTableModelListener(TableModelListener l) {
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes a listener from the list that is notified each time a change to
|
||||
* the data model occurs.
|
||||
*
|
||||
* @param l the TableModelListener
|
||||
*/
|
||||
@Override
|
||||
public void removeTableModelListener(TableModelListener l) {
|
||||
}
|
||||
}
|
||||
/*
|
||||
* Copyright (C) 2010-2015 JPEXS
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.jpexs.decompiler.flash.gui.abc.tablemodels;
|
||||
|
||||
import com.jpexs.decompiler.flash.abc.ABC;
|
||||
import javax.swing.event.TableModelListener;
|
||||
import javax.swing.table.TableModel;
|
||||
|
||||
public class StringTableModel implements TableModel {
|
||||
|
||||
private final ABC abc;
|
||||
private static final String[] columnNames = new String[]{"Index", "Value"};
|
||||
private static final Class[] classes = new Class[]{Long.class, String.class};
|
||||
|
||||
public StringTableModel(ABC abc) {
|
||||
this.abc = abc;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the number of rows in the model. A <code>JTable</code> uses this
|
||||
* method to determine how many rows it should display. This method should
|
||||
* be quick, as it is called frequently during rendering.
|
||||
*
|
||||
* @return the number of rows in the model
|
||||
* @see #getColumnCount
|
||||
*/
|
||||
@Override
|
||||
public int getRowCount() {
|
||||
if (abc == null) {
|
||||
return 0;
|
||||
}
|
||||
return abc.constants.getStringCount();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the number of columns in the model. A <code>JTable</code> uses
|
||||
* this method to determine how many columns it should create and display by
|
||||
* default.
|
||||
*
|
||||
* @return the number of columns in the model
|
||||
* @see #getRowCount
|
||||
*/
|
||||
@Override
|
||||
public int getColumnCount() {
|
||||
return 2;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the name of the column at <code>columnIndex</code>. This is used
|
||||
* to initialize the table's column header name. Note: this name does not
|
||||
* need to be unique; two columns in a table can have the same name.
|
||||
*
|
||||
* @param columnIndex the index of the column
|
||||
* @return the name of the column
|
||||
*/
|
||||
@Override
|
||||
public String getColumnName(int columnIndex) {
|
||||
return columnNames[columnIndex];
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the most specific superclass for all the cell values in the
|
||||
* column. This is used by the <code>JTable</code> to set up a default
|
||||
* renderer and editor for the column.
|
||||
*
|
||||
* @param columnIndex the index of the column
|
||||
* @return the common ancestor class of the object values in the model.
|
||||
*/
|
||||
@Override
|
||||
public Class<?> getColumnClass(int columnIndex) {
|
||||
return classes[columnIndex];
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns true if the cell at <code>rowIndex</code> and
|
||||
* <code>columnIndex</code> is editable. Otherwise, <code>setValueAt</code>
|
||||
* on the cell will not change the value of that cell.
|
||||
*
|
||||
* @param rowIndex the row whose value to be queried
|
||||
* @param columnIndex the column whose value to be queried
|
||||
* @return true if the cell is editable
|
||||
* @see #setValueAt
|
||||
*/
|
||||
@Override
|
||||
public boolean isCellEditable(int rowIndex, int columnIndex) {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the value for the cell at <code>columnIndex</code> and
|
||||
* <code>rowIndex</code>.
|
||||
*
|
||||
* @param rowIndex the row whose value is to be queried
|
||||
* @param columnIndex the column whose value is to be queried
|
||||
* @return the value Object at the specified cell
|
||||
*/
|
||||
@Override
|
||||
public Object getValueAt(int rowIndex, int columnIndex) {
|
||||
if (columnIndex == 0) {
|
||||
return rowIndex;
|
||||
} else {
|
||||
return abc.constants.getString(rowIndex);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value in the cell at <code>columnIndex</code> and
|
||||
* <code>rowIndex</code> to <code>aValue</code>.
|
||||
*
|
||||
* @param aValue the new value
|
||||
* @param rowIndex the row whose value is to be changed
|
||||
* @param columnIndex the column whose value is to be changed
|
||||
* @see #getValueAt
|
||||
* @see #isCellEditable
|
||||
*/
|
||||
@Override
|
||||
public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds a listener to the list that is notified each time a change to the
|
||||
* data model occurs.
|
||||
*
|
||||
* @param l the TableModelListener
|
||||
*/
|
||||
@Override
|
||||
public void addTableModelListener(TableModelListener l) {
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes a listener from the list that is notified each time a change to
|
||||
* the data model occurs.
|
||||
*
|
||||
* @param l the TableModelListener
|
||||
*/
|
||||
@Override
|
||||
public void removeTableModelListener(TableModelListener l) {
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,153 +1,153 @@
|
||||
/*
|
||||
* Copyright (C) 2010-2014 JPEXS
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.jpexs.decompiler.flash.gui.abc.tablemodels;
|
||||
|
||||
import com.jpexs.decompiler.flash.abc.ABC;
|
||||
import javax.swing.event.TableModelListener;
|
||||
import javax.swing.table.TableModel;
|
||||
|
||||
public class UIntTableModel implements TableModel {
|
||||
|
||||
private final ABC abc;
|
||||
private static final String[] columnNames = new String[]{"Index", "Value"};
|
||||
private static final Class[] classes = new Class[]{Long.class, Long.class};
|
||||
|
||||
public UIntTableModel(ABC abc) {
|
||||
this.abc = abc;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the number of rows in the model. A <code>JTable</code> uses this
|
||||
* method to determine how many rows it should display. This method should
|
||||
* be quick, as it is called frequently during rendering.
|
||||
*
|
||||
* @return the number of rows in the model
|
||||
* @see #getColumnCount
|
||||
*/
|
||||
@Override
|
||||
public int getRowCount() {
|
||||
if (abc == null) {
|
||||
return 0;
|
||||
}
|
||||
return abc.constants.getUIntCount();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the number of columns in the model. A <code>JTable</code> uses
|
||||
* this method to determine how many columns it should create and display by
|
||||
* default.
|
||||
*
|
||||
* @return the number of columns in the model
|
||||
* @see #getRowCount
|
||||
*/
|
||||
@Override
|
||||
public int getColumnCount() {
|
||||
return 2;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the name of the column at <code>columnIndex</code>. This is used
|
||||
* to initialize the table's column header name. Note: this name does not
|
||||
* need to be unique; two columns in a table can have the same name.
|
||||
*
|
||||
* @param columnIndex the index of the column
|
||||
* @return the name of the column
|
||||
*/
|
||||
@Override
|
||||
public String getColumnName(int columnIndex) {
|
||||
return columnNames[columnIndex];
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the most specific superclass for all the cell values in the
|
||||
* column. This is used by the <code>JTable</code> to set up a default
|
||||
* renderer and editor for the column.
|
||||
*
|
||||
* @param columnIndex the index of the column
|
||||
* @return the common ancestor class of the object values in the model.
|
||||
*/
|
||||
@Override
|
||||
public Class<?> getColumnClass(int columnIndex) {
|
||||
return classes[columnIndex];
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns true if the cell at <code>rowIndex</code> and
|
||||
* <code>columnIndex</code> is editable. Otherwise, <code>setValueAt</code>
|
||||
* on the cell will not change the value of that cell.
|
||||
*
|
||||
* @param rowIndex the row whose value to be queried
|
||||
* @param columnIndex the column whose value to be queried
|
||||
* @return true if the cell is editable
|
||||
* @see #setValueAt
|
||||
*/
|
||||
@Override
|
||||
public boolean isCellEditable(int rowIndex, int columnIndex) {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the value for the cell at <code>columnIndex</code> and
|
||||
* <code>rowIndex</code>.
|
||||
*
|
||||
* @param rowIndex the row whose value is to be queried
|
||||
* @param columnIndex the column whose value is to be queried
|
||||
* @return the value Object at the specified cell
|
||||
*/
|
||||
@Override
|
||||
public Object getValueAt(int rowIndex, int columnIndex) {
|
||||
if (columnIndex == 0) {
|
||||
return rowIndex;
|
||||
} else {
|
||||
return abc.constants.getUInt(rowIndex);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value in the cell at <code>columnIndex</code> and
|
||||
* <code>rowIndex</code> to <code>aValue</code>.
|
||||
*
|
||||
* @param aValue the new value
|
||||
* @param rowIndex the row whose value is to be changed
|
||||
* @param columnIndex the column whose value is to be changed
|
||||
* @see #getValueAt
|
||||
* @see #isCellEditable
|
||||
*/
|
||||
@Override
|
||||
public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds a listener to the list that is notified each time a change to the
|
||||
* data model occurs.
|
||||
*
|
||||
* @param l the TableModelListener
|
||||
*/
|
||||
@Override
|
||||
public void addTableModelListener(TableModelListener l) {
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes a listener from the list that is notified each time a change to
|
||||
* the data model occurs.
|
||||
*
|
||||
* @param l the TableModelListener
|
||||
*/
|
||||
@Override
|
||||
public void removeTableModelListener(TableModelListener l) {
|
||||
}
|
||||
}
|
||||
/*
|
||||
* Copyright (C) 2010-2015 JPEXS
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.jpexs.decompiler.flash.gui.abc.tablemodels;
|
||||
|
||||
import com.jpexs.decompiler.flash.abc.ABC;
|
||||
import javax.swing.event.TableModelListener;
|
||||
import javax.swing.table.TableModel;
|
||||
|
||||
public class UIntTableModel implements TableModel {
|
||||
|
||||
private final ABC abc;
|
||||
private static final String[] columnNames = new String[]{"Index", "Value"};
|
||||
private static final Class[] classes = new Class[]{Long.class, Long.class};
|
||||
|
||||
public UIntTableModel(ABC abc) {
|
||||
this.abc = abc;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the number of rows in the model. A <code>JTable</code> uses this
|
||||
* method to determine how many rows it should display. This method should
|
||||
* be quick, as it is called frequently during rendering.
|
||||
*
|
||||
* @return the number of rows in the model
|
||||
* @see #getColumnCount
|
||||
*/
|
||||
@Override
|
||||
public int getRowCount() {
|
||||
if (abc == null) {
|
||||
return 0;
|
||||
}
|
||||
return abc.constants.getUIntCount();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the number of columns in the model. A <code>JTable</code> uses
|
||||
* this method to determine how many columns it should create and display by
|
||||
* default.
|
||||
*
|
||||
* @return the number of columns in the model
|
||||
* @see #getRowCount
|
||||
*/
|
||||
@Override
|
||||
public int getColumnCount() {
|
||||
return 2;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the name of the column at <code>columnIndex</code>. This is used
|
||||
* to initialize the table's column header name. Note: this name does not
|
||||
* need to be unique; two columns in a table can have the same name.
|
||||
*
|
||||
* @param columnIndex the index of the column
|
||||
* @return the name of the column
|
||||
*/
|
||||
@Override
|
||||
public String getColumnName(int columnIndex) {
|
||||
return columnNames[columnIndex];
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the most specific superclass for all the cell values in the
|
||||
* column. This is used by the <code>JTable</code> to set up a default
|
||||
* renderer and editor for the column.
|
||||
*
|
||||
* @param columnIndex the index of the column
|
||||
* @return the common ancestor class of the object values in the model.
|
||||
*/
|
||||
@Override
|
||||
public Class<?> getColumnClass(int columnIndex) {
|
||||
return classes[columnIndex];
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns true if the cell at <code>rowIndex</code> and
|
||||
* <code>columnIndex</code> is editable. Otherwise, <code>setValueAt</code>
|
||||
* on the cell will not change the value of that cell.
|
||||
*
|
||||
* @param rowIndex the row whose value to be queried
|
||||
* @param columnIndex the column whose value to be queried
|
||||
* @return true if the cell is editable
|
||||
* @see #setValueAt
|
||||
*/
|
||||
@Override
|
||||
public boolean isCellEditable(int rowIndex, int columnIndex) {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the value for the cell at <code>columnIndex</code> and
|
||||
* <code>rowIndex</code>.
|
||||
*
|
||||
* @param rowIndex the row whose value is to be queried
|
||||
* @param columnIndex the column whose value is to be queried
|
||||
* @return the value Object at the specified cell
|
||||
*/
|
||||
@Override
|
||||
public Object getValueAt(int rowIndex, int columnIndex) {
|
||||
if (columnIndex == 0) {
|
||||
return rowIndex;
|
||||
} else {
|
||||
return abc.constants.getUInt(rowIndex);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value in the cell at <code>columnIndex</code> and
|
||||
* <code>rowIndex</code> to <code>aValue</code>.
|
||||
*
|
||||
* @param aValue the new value
|
||||
* @param rowIndex the row whose value is to be changed
|
||||
* @param columnIndex the column whose value is to be changed
|
||||
* @see #getValueAt
|
||||
* @see #isCellEditable
|
||||
*/
|
||||
@Override
|
||||
public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds a listener to the list that is notified each time a change to the
|
||||
* data model occurs.
|
||||
*
|
||||
* @param l the TableModelListener
|
||||
*/
|
||||
@Override
|
||||
public void addTableModelListener(TableModelListener l) {
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes a listener from the list that is notified each time a change to
|
||||
* the data model occurs.
|
||||
*
|
||||
* @param l the TableModelListener
|
||||
*/
|
||||
@Override
|
||||
public void removeTableModelListener(TableModelListener l) {
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2014-2015 JPEXS
|
||||
* Copyright (C) 2010-2015 JPEXS
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2010-2014 JPEXS
|
||||
* Copyright (C) 2010-2015 JPEXS
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2010-2014 JPEXS
|
||||
* Copyright (C) 2010-2015 JPEXS
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2010-2014 JPEXS
|
||||
* Copyright (C) 2010-2015 JPEXS
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -1,91 +1,91 @@
|
||||
/*
|
||||
* Copyright (C) 2010-2014 JPEXS
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.jpexs.decompiler.flash.gui.generictageditors;
|
||||
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
import java.lang.reflect.Field;
|
||||
import javax.swing.JCheckBox;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author JPEXS
|
||||
*/
|
||||
public class BooleanEditor extends JCheckBox implements GenericTagEditor {
|
||||
|
||||
private final Object obj;
|
||||
private final Field field;
|
||||
private final int index;
|
||||
private final Class<?> type;
|
||||
private final String fieldName;
|
||||
|
||||
public BooleanEditor(String fieldName, Object obj, Field field, int index, Class<?> type) {
|
||||
super();
|
||||
this.obj = obj;
|
||||
this.field = field;
|
||||
this.index = index;
|
||||
this.type = type;
|
||||
this.fieldName = fieldName;
|
||||
try {
|
||||
setSelected((boolean) ReflectionTools.getValue(obj, field, index));
|
||||
} catch (IllegalArgumentException | IllegalAccessException ex) {
|
||||
// ignore
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void save() {
|
||||
try {
|
||||
ReflectionTools.setValue(obj, field, index, isSelected());
|
||||
} catch (IllegalArgumentException | IllegalAccessException ex) {
|
||||
// ignore
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addChangeListener(final ChangeListener l) {
|
||||
final GenericTagEditor t = this;
|
||||
addActionListener(new ActionListener() {
|
||||
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
l.change(t);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object getChangedValue() {
|
||||
return isSelected();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getFieldName() {
|
||||
return fieldName;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Field getField() {
|
||||
return field;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getReadOnlyValue() {
|
||||
return getChangedValue().toString();
|
||||
}
|
||||
|
||||
}
|
||||
/*
|
||||
* Copyright (C) 2010-2015 JPEXS
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.jpexs.decompiler.flash.gui.generictageditors;
|
||||
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
import java.lang.reflect.Field;
|
||||
import javax.swing.JCheckBox;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author JPEXS
|
||||
*/
|
||||
public class BooleanEditor extends JCheckBox implements GenericTagEditor {
|
||||
|
||||
private final Object obj;
|
||||
private final Field field;
|
||||
private final int index;
|
||||
private final Class<?> type;
|
||||
private final String fieldName;
|
||||
|
||||
public BooleanEditor(String fieldName, Object obj, Field field, int index, Class<?> type) {
|
||||
super();
|
||||
this.obj = obj;
|
||||
this.field = field;
|
||||
this.index = index;
|
||||
this.type = type;
|
||||
this.fieldName = fieldName;
|
||||
try {
|
||||
setSelected((boolean) ReflectionTools.getValue(obj, field, index));
|
||||
} catch (IllegalArgumentException | IllegalAccessException ex) {
|
||||
// ignore
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void save() {
|
||||
try {
|
||||
ReflectionTools.setValue(obj, field, index, isSelected());
|
||||
} catch (IllegalArgumentException | IllegalAccessException ex) {
|
||||
// ignore
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addChangeListener(final ChangeListener l) {
|
||||
final GenericTagEditor t = this;
|
||||
addActionListener(new ActionListener() {
|
||||
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
l.change(t);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object getChangedValue() {
|
||||
return isSelected();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getFieldName() {
|
||||
return fieldName;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Field getField() {
|
||||
return field;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getReadOnlyValue() {
|
||||
return getChangedValue().toString();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2014-2015 JPEXS
|
||||
* Copyright (C) 2010-2015 JPEXS
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2010-2014 JPEXS
|
||||
* Copyright (C) 2010-2015 JPEXS
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -1,38 +1,38 @@
|
||||
/*
|
||||
* Copyright (C) 2010-2014 JPEXS
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.jpexs.decompiler.flash.gui.generictageditors;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author JPEXS
|
||||
*/
|
||||
public interface GenericTagEditor {
|
||||
|
||||
public void save();
|
||||
|
||||
public void addChangeListener(ChangeListener l);
|
||||
|
||||
public Object getChangedValue();
|
||||
|
||||
public String getFieldName();
|
||||
|
||||
public Field getField();
|
||||
|
||||
public String getReadOnlyValue();
|
||||
}
|
||||
/*
|
||||
* Copyright (C) 2010-2015 JPEXS
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.jpexs.decompiler.flash.gui.generictageditors;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author JPEXS
|
||||
*/
|
||||
public interface GenericTagEditor {
|
||||
|
||||
public void save();
|
||||
|
||||
public void addChangeListener(ChangeListener l);
|
||||
|
||||
public Object getChangedValue();
|
||||
|
||||
public String getFieldName();
|
||||
|
||||
public Field getField();
|
||||
|
||||
public String getReadOnlyValue();
|
||||
}
|
||||
|
||||
@@ -1,218 +1,218 @@
|
||||
/*
|
||||
* Copyright (C) 2010-2014 JPEXS
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.jpexs.decompiler.flash.gui.generictageditors;
|
||||
|
||||
import com.jpexs.decompiler.flash.types.BasicType;
|
||||
import com.jpexs.decompiler.flash.types.annotations.SWFType;
|
||||
import java.awt.Component;
|
||||
import java.awt.event.FocusAdapter;
|
||||
import java.awt.event.FocusEvent;
|
||||
import java.lang.reflect.Field;
|
||||
import javax.swing.JFormattedTextField;
|
||||
import javax.swing.JSpinner;
|
||||
import javax.swing.SpinnerModel;
|
||||
import javax.swing.SpinnerNumberModel;
|
||||
import javax.swing.text.DefaultFormatter;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author JPEXS
|
||||
*/
|
||||
public class NumberEditor extends JSpinner implements GenericTagEditor {
|
||||
|
||||
private final Object obj;
|
||||
private final Field field;
|
||||
private final int index;
|
||||
private final Class<?> type;
|
||||
private final SWFType swfType;
|
||||
private String fieldName;
|
||||
|
||||
@Override
|
||||
public BaselineResizeBehavior getBaselineResizeBehavior() {
|
||||
return Component.BaselineResizeBehavior.CONSTANT_ASCENT;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getBaseline(int width, int height) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
public NumberEditor(String fieldName, Object obj, Field field, int index, Class<?> type, SWFType swfType) {
|
||||
setSize(100, getSize().height);
|
||||
setMaximumSize(getSize());
|
||||
this.obj = obj;
|
||||
this.field = field;
|
||||
this.index = index;
|
||||
this.type = type;
|
||||
this.swfType = swfType;
|
||||
this.fieldName = fieldName;
|
||||
try {
|
||||
Object value = ReflectionTools.getValue(obj, field, index);
|
||||
setModel(getModel(swfType, value));
|
||||
JFormattedTextField jtf = ((JSpinner.NumberEditor) getEditor()).getTextField();
|
||||
DefaultFormatter formatter = (DefaultFormatter) jtf.getFormatter();
|
||||
formatter.setCommitsOnValidEdit(true);
|
||||
} catch (IllegalArgumentException | IllegalAccessException ex) {
|
||||
// ignore
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void save() {
|
||||
try {
|
||||
Object value = getChangedValue();
|
||||
if (value != null) {
|
||||
ReflectionTools.setValue(obj, field, index, value);
|
||||
}
|
||||
} catch (IllegalArgumentException | IllegalAccessException ex) {
|
||||
// ignore
|
||||
}
|
||||
}
|
||||
|
||||
private SpinnerModel getModel(SWFType swfType, Object value) {
|
||||
SpinnerNumberModel m = null;
|
||||
BasicType basicType = swfType == null ? BasicType.NONE : swfType.value();
|
||||
switch (basicType) {
|
||||
case UI8:
|
||||
m = new SpinnerNumberModel(toInt(value), 0, 0xff, 1);
|
||||
break;
|
||||
case UI16:
|
||||
m = new SpinnerNumberModel(toInt(value), 0, 0xffff, 1);
|
||||
break;
|
||||
case UB: {
|
||||
long max = 1;
|
||||
if (swfType.count() > 0) {
|
||||
max <<= swfType.count();
|
||||
} else {
|
||||
max <<= 31;
|
||||
}
|
||||
m = new SpinnerNumberModel((Number) toLong(value), 0L, (long) max - 1, 1L);
|
||||
}
|
||||
break;
|
||||
case UI32:
|
||||
case EncodedU32:
|
||||
case NONE:
|
||||
m = new SpinnerNumberModel((Number) toLong(value), 0L, 0xffffffffL, 1L);
|
||||
break;
|
||||
case SI8:
|
||||
m = new SpinnerNumberModel(toInt(value), -0x80, 0x7f, 1);
|
||||
break;
|
||||
case SI16:
|
||||
case FLOAT16:
|
||||
m = new SpinnerNumberModel(toInt(value), -0x8000, 0x7fff, 1);
|
||||
break;
|
||||
case FB:
|
||||
case SB: {
|
||||
long max = 1;
|
||||
if (swfType.count() > 0) {
|
||||
max <<= (swfType.count() - 1);
|
||||
} else {
|
||||
max <<= 30;
|
||||
}
|
||||
m = new SpinnerNumberModel((Number) toLong(value), (long) (-max), (long) max - 1, 1L);
|
||||
}
|
||||
break;
|
||||
case SI32:
|
||||
m = new SpinnerNumberModel(toDouble(value), -0x80000000, 0x7fffffff, 1);
|
||||
break;
|
||||
case FLOAT:
|
||||
case FIXED:
|
||||
case FIXED8:
|
||||
m = new SpinnerNumberModel(toDouble(value), -0x80000000, 0x7fffffff, 0.01);
|
||||
break;
|
||||
}
|
||||
return m;
|
||||
}
|
||||
|
||||
private double toDouble(Object value) {
|
||||
if (value instanceof Float) {
|
||||
return (double) (Float) value;
|
||||
}
|
||||
if (value instanceof Double) {
|
||||
return (double) (Double) value;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
private int toInt(Object value) {
|
||||
if (value instanceof Short) {
|
||||
return (int) (Short) value;
|
||||
}
|
||||
if (value instanceof Integer) {
|
||||
return (int) (Integer) value;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
private long toLong(Object value) {
|
||||
if (value instanceof Short) {
|
||||
return (long) (Short) value;
|
||||
}
|
||||
if (value instanceof Integer) {
|
||||
return (long) (Integer) value;
|
||||
}
|
||||
if (value instanceof Long) {
|
||||
return (long) (Long) value;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addChangeListener(final ChangeListener l) {
|
||||
final GenericTagEditor t = this;
|
||||
addFocusListener(new FocusAdapter() {
|
||||
|
||||
@Override
|
||||
public void focusLost(FocusEvent e) {
|
||||
l.change(t);
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object getChangedValue() {
|
||||
Object value = null;
|
||||
if (type.equals(int.class) || type.equals(Integer.class)) {
|
||||
value = Integer.parseInt(getValue().toString());
|
||||
} else if (type.equals(short.class) || type.equals(Short.class)) {
|
||||
value = Short.parseShort(getValue().toString());
|
||||
} else if (type.equals(long.class) || type.equals(Long.class)) {
|
||||
value = Long.parseLong(getValue().toString());
|
||||
} else if (type.equals(double.class) || type.equals(Double.class)) {
|
||||
value = Double.parseDouble(getValue().toString());
|
||||
} else if (type.equals(float.class) || type.equals(Float.class)) {
|
||||
value = Float.parseFloat(getValue().toString());
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getFieldName() {
|
||||
return fieldName;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Field getField() {
|
||||
return field;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getReadOnlyValue() {
|
||||
return getChangedValue().toString();
|
||||
}
|
||||
}
|
||||
/*
|
||||
* Copyright (C) 2010-2015 JPEXS
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.jpexs.decompiler.flash.gui.generictageditors;
|
||||
|
||||
import com.jpexs.decompiler.flash.types.BasicType;
|
||||
import com.jpexs.decompiler.flash.types.annotations.SWFType;
|
||||
import java.awt.Component;
|
||||
import java.awt.event.FocusAdapter;
|
||||
import java.awt.event.FocusEvent;
|
||||
import java.lang.reflect.Field;
|
||||
import javax.swing.JFormattedTextField;
|
||||
import javax.swing.JSpinner;
|
||||
import javax.swing.SpinnerModel;
|
||||
import javax.swing.SpinnerNumberModel;
|
||||
import javax.swing.text.DefaultFormatter;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author JPEXS
|
||||
*/
|
||||
public class NumberEditor extends JSpinner implements GenericTagEditor {
|
||||
|
||||
private final Object obj;
|
||||
private final Field field;
|
||||
private final int index;
|
||||
private final Class<?> type;
|
||||
private final SWFType swfType;
|
||||
private String fieldName;
|
||||
|
||||
@Override
|
||||
public BaselineResizeBehavior getBaselineResizeBehavior() {
|
||||
return Component.BaselineResizeBehavior.CONSTANT_ASCENT;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getBaseline(int width, int height) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
public NumberEditor(String fieldName, Object obj, Field field, int index, Class<?> type, SWFType swfType) {
|
||||
setSize(100, getSize().height);
|
||||
setMaximumSize(getSize());
|
||||
this.obj = obj;
|
||||
this.field = field;
|
||||
this.index = index;
|
||||
this.type = type;
|
||||
this.swfType = swfType;
|
||||
this.fieldName = fieldName;
|
||||
try {
|
||||
Object value = ReflectionTools.getValue(obj, field, index);
|
||||
setModel(getModel(swfType, value));
|
||||
JFormattedTextField jtf = ((JSpinner.NumberEditor) getEditor()).getTextField();
|
||||
DefaultFormatter formatter = (DefaultFormatter) jtf.getFormatter();
|
||||
formatter.setCommitsOnValidEdit(true);
|
||||
} catch (IllegalArgumentException | IllegalAccessException ex) {
|
||||
// ignore
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void save() {
|
||||
try {
|
||||
Object value = getChangedValue();
|
||||
if (value != null) {
|
||||
ReflectionTools.setValue(obj, field, index, value);
|
||||
}
|
||||
} catch (IllegalArgumentException | IllegalAccessException ex) {
|
||||
// ignore
|
||||
}
|
||||
}
|
||||
|
||||
private SpinnerModel getModel(SWFType swfType, Object value) {
|
||||
SpinnerNumberModel m = null;
|
||||
BasicType basicType = swfType == null ? BasicType.NONE : swfType.value();
|
||||
switch (basicType) {
|
||||
case UI8:
|
||||
m = new SpinnerNumberModel(toInt(value), 0, 0xff, 1);
|
||||
break;
|
||||
case UI16:
|
||||
m = new SpinnerNumberModel(toInt(value), 0, 0xffff, 1);
|
||||
break;
|
||||
case UB: {
|
||||
long max = 1;
|
||||
if (swfType.count() > 0) {
|
||||
max <<= swfType.count();
|
||||
} else {
|
||||
max <<= 31;
|
||||
}
|
||||
m = new SpinnerNumberModel((Number) toLong(value), 0L, (long) max - 1, 1L);
|
||||
}
|
||||
break;
|
||||
case UI32:
|
||||
case EncodedU32:
|
||||
case NONE:
|
||||
m = new SpinnerNumberModel((Number) toLong(value), 0L, 0xffffffffL, 1L);
|
||||
break;
|
||||
case SI8:
|
||||
m = new SpinnerNumberModel(toInt(value), -0x80, 0x7f, 1);
|
||||
break;
|
||||
case SI16:
|
||||
case FLOAT16:
|
||||
m = new SpinnerNumberModel(toInt(value), -0x8000, 0x7fff, 1);
|
||||
break;
|
||||
case FB:
|
||||
case SB: {
|
||||
long max = 1;
|
||||
if (swfType.count() > 0) {
|
||||
max <<= (swfType.count() - 1);
|
||||
} else {
|
||||
max <<= 30;
|
||||
}
|
||||
m = new SpinnerNumberModel((Number) toLong(value), (long) (-max), (long) max - 1, 1L);
|
||||
}
|
||||
break;
|
||||
case SI32:
|
||||
m = new SpinnerNumberModel(toDouble(value), -0x80000000, 0x7fffffff, 1);
|
||||
break;
|
||||
case FLOAT:
|
||||
case FIXED:
|
||||
case FIXED8:
|
||||
m = new SpinnerNumberModel(toDouble(value), -0x80000000, 0x7fffffff, 0.01);
|
||||
break;
|
||||
}
|
||||
return m;
|
||||
}
|
||||
|
||||
private double toDouble(Object value) {
|
||||
if (value instanceof Float) {
|
||||
return (double) (Float) value;
|
||||
}
|
||||
if (value instanceof Double) {
|
||||
return (double) (Double) value;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
private int toInt(Object value) {
|
||||
if (value instanceof Short) {
|
||||
return (int) (Short) value;
|
||||
}
|
||||
if (value instanceof Integer) {
|
||||
return (int) (Integer) value;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
private long toLong(Object value) {
|
||||
if (value instanceof Short) {
|
||||
return (long) (Short) value;
|
||||
}
|
||||
if (value instanceof Integer) {
|
||||
return (long) (Integer) value;
|
||||
}
|
||||
if (value instanceof Long) {
|
||||
return (long) (Long) value;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addChangeListener(final ChangeListener l) {
|
||||
final GenericTagEditor t = this;
|
||||
addFocusListener(new FocusAdapter() {
|
||||
|
||||
@Override
|
||||
public void focusLost(FocusEvent e) {
|
||||
l.change(t);
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object getChangedValue() {
|
||||
Object value = null;
|
||||
if (type.equals(int.class) || type.equals(Integer.class)) {
|
||||
value = Integer.parseInt(getValue().toString());
|
||||
} else if (type.equals(short.class) || type.equals(Short.class)) {
|
||||
value = Short.parseShort(getValue().toString());
|
||||
} else if (type.equals(long.class) || type.equals(Long.class)) {
|
||||
value = Long.parseLong(getValue().toString());
|
||||
} else if (type.equals(double.class) || type.equals(Double.class)) {
|
||||
value = Double.parseDouble(getValue().toString());
|
||||
} else if (type.equals(float.class) || type.equals(Float.class)) {
|
||||
value = Float.parseFloat(getValue().toString());
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getFieldName() {
|
||||
return fieldName;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Field getField() {
|
||||
return field;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getReadOnlyValue() {
|
||||
return getChangedValue().toString();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2010-2014 JPEXS
|
||||
* Copyright (C) 2010-2015 JPEXS
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -1,124 +1,124 @@
|
||||
/*
|
||||
* Copyright (C) 2010-2014 JPEXS
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.jpexs.decompiler.flash.gui.generictageditors;
|
||||
|
||||
import com.jpexs.helpers.Helper;
|
||||
import java.awt.Component;
|
||||
import java.awt.Dimension;
|
||||
import java.awt.event.FocusAdapter;
|
||||
import java.awt.event.FocusEvent;
|
||||
import java.lang.reflect.Field;
|
||||
import javax.swing.JTextArea;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author JPEXS
|
||||
*/
|
||||
public class StringEditor extends JTextArea implements GenericTagEditor {
|
||||
|
||||
private final Object obj;
|
||||
private final Field field;
|
||||
private final int index;
|
||||
private final Class<?> type;
|
||||
private String fieldName;
|
||||
private boolean multiline;
|
||||
|
||||
@Override
|
||||
public boolean getScrollableTracksViewportWidth() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Dimension getPreferredSize() {
|
||||
Dimension ret = super.getPreferredSize();
|
||||
ret.width = 300;
|
||||
return ret;
|
||||
}
|
||||
|
||||
@Override
|
||||
public BaselineResizeBehavior getBaselineResizeBehavior() {
|
||||
return Component.BaselineResizeBehavior.CONSTANT_ASCENT;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getBaseline(int width, int height) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
public StringEditor(String fieldName, Object obj, Field field, int index, Class<?> type, boolean multiline) {
|
||||
setLineWrap(true);
|
||||
this.obj = obj;
|
||||
this.field = field;
|
||||
this.index = index;
|
||||
this.type = type;
|
||||
this.fieldName = fieldName;
|
||||
this.multiline = multiline;
|
||||
if (multiline) {
|
||||
Dimension d = new Dimension(500, 200);
|
||||
setPreferredSize(d);
|
||||
setSize(d);
|
||||
}
|
||||
try {
|
||||
setText((String) ReflectionTools.getValue(obj, field, index));
|
||||
} catch (IllegalArgumentException | IllegalAccessException ex) {
|
||||
// ignore
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void save() {
|
||||
try {
|
||||
ReflectionTools.setValue(obj, field, index, getText());
|
||||
} catch (IllegalArgumentException | IllegalAccessException ex) {
|
||||
// ignore
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addChangeListener(final ChangeListener l) {
|
||||
final GenericTagEditor t = this;
|
||||
addFocusListener(new FocusAdapter() {
|
||||
|
||||
@Override
|
||||
public void focusLost(FocusEvent e) {
|
||||
l.change(t);
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object getChangedValue() {
|
||||
return getText();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getFieldName() {
|
||||
return fieldName;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Field getField() {
|
||||
return field;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getReadOnlyValue() {
|
||||
return Helper.escapeHTML(getChangedValue().toString());
|
||||
}
|
||||
|
||||
}
|
||||
/*
|
||||
* Copyright (C) 2010-2015 JPEXS
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.jpexs.decompiler.flash.gui.generictageditors;
|
||||
|
||||
import com.jpexs.helpers.Helper;
|
||||
import java.awt.Component;
|
||||
import java.awt.Dimension;
|
||||
import java.awt.event.FocusAdapter;
|
||||
import java.awt.event.FocusEvent;
|
||||
import java.lang.reflect.Field;
|
||||
import javax.swing.JTextArea;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author JPEXS
|
||||
*/
|
||||
public class StringEditor extends JTextArea implements GenericTagEditor {
|
||||
|
||||
private final Object obj;
|
||||
private final Field field;
|
||||
private final int index;
|
||||
private final Class<?> type;
|
||||
private String fieldName;
|
||||
private boolean multiline;
|
||||
|
||||
@Override
|
||||
public boolean getScrollableTracksViewportWidth() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Dimension getPreferredSize() {
|
||||
Dimension ret = super.getPreferredSize();
|
||||
ret.width = 300;
|
||||
return ret;
|
||||
}
|
||||
|
||||
@Override
|
||||
public BaselineResizeBehavior getBaselineResizeBehavior() {
|
||||
return Component.BaselineResizeBehavior.CONSTANT_ASCENT;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getBaseline(int width, int height) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
public StringEditor(String fieldName, Object obj, Field field, int index, Class<?> type, boolean multiline) {
|
||||
setLineWrap(true);
|
||||
this.obj = obj;
|
||||
this.field = field;
|
||||
this.index = index;
|
||||
this.type = type;
|
||||
this.fieldName = fieldName;
|
||||
this.multiline = multiline;
|
||||
if (multiline) {
|
||||
Dimension d = new Dimension(500, 200);
|
||||
setPreferredSize(d);
|
||||
setSize(d);
|
||||
}
|
||||
try {
|
||||
setText((String) ReflectionTools.getValue(obj, field, index));
|
||||
} catch (IllegalArgumentException | IllegalAccessException ex) {
|
||||
// ignore
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void save() {
|
||||
try {
|
||||
ReflectionTools.setValue(obj, field, index, getText());
|
||||
} catch (IllegalArgumentException | IllegalAccessException ex) {
|
||||
// ignore
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addChangeListener(final ChangeListener l) {
|
||||
final GenericTagEditor t = this;
|
||||
addFocusListener(new FocusAdapter() {
|
||||
|
||||
@Override
|
||||
public void focusLost(FocusEvent e) {
|
||||
l.change(t);
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object getChangedValue() {
|
||||
return getText();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getFieldName() {
|
||||
return fieldName;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Field getField() {
|
||||
return field;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getReadOnlyValue() {
|
||||
return Helper.escapeHTML(getChangedValue().toString());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2010-2014 JPEXS
|
||||
* Copyright (C) 2010-2015 JPEXS
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2010-2014 JPEXS
|
||||
* Copyright (C) 2010-2015 JPEXS
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2010-2014 JPEXS
|
||||
* Copyright (C) 2010-2015 JPEXS
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright (C) 2010-2014 JPEXS
|
||||
# Copyright (C) 2010-2015 JPEXS
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright (C) 2010-2014 JPEXS
|
||||
# Copyright (C) 2010-2015 JPEXS
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright (C) 2010-2014 JPEXS
|
||||
# Copyright (C) 2010-2015 JPEXS
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright (C) 2010-2014 JPEXS
|
||||
# Copyright (C) 2010-2015 JPEXS
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -1,24 +1,24 @@
|
||||
# Copyright (C) 2010-2014 JPEXS
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
version = versi\u00f3n
|
||||
by = por
|
||||
button.ok = OK
|
||||
dialog.title = Acerca de
|
||||
contributors = Colaboradores:
|
||||
#In the translation, replace "english" with target language name
|
||||
translation.author.label = Autor de la traducci\u00f3n al espa\u00f1ol:
|
||||
#In the translation, insert your name here
|
||||
translation.author = poxyran
|
||||
# Copyright (C) 2010-2015 JPEXS
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
version = versi\u00f3n
|
||||
by = por
|
||||
button.ok = OK
|
||||
dialog.title = Acerca de
|
||||
contributors = Colaboradores:
|
||||
#In the translation, replace "english" with target language name
|
||||
translation.author.label = Autor de la traducci\u00f3n al espa\u00f1ol:
|
||||
#In the translation, insert your name here
|
||||
translation.author = poxyran
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright (C) 2010-2014 JPEXS
|
||||
# Copyright (C) 2010-2015 JPEXS
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright (C) 2010-2014 JPEXS
|
||||
# Copyright (C) 2010-2015 JPEXS
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright (C) 2010-2014 JPEXS
|
||||
# Copyright (C) 2010-2015 JPEXS
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright (C) 2010-2014 JPEXS
|
||||
# Copyright (C) 2010-2015 JPEXS
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -1,24 +1,24 @@
|
||||
# Copyright (C) 2010-2014 JPEXS
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
version = version
|
||||
by = por
|
||||
button.ok = OK
|
||||
dialog.title = Acerca de
|
||||
contributors = Colaboradores:
|
||||
#In the translation, replace "english" with target language name
|
||||
translation.author.label = Autor da tradu\u00e7\u00e3o em Portugu\u00eas:
|
||||
#In the translation, insert your name here
|
||||
translation.author = MaGiC
|
||||
# Copyright (C) 2010-2015 JPEXS
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
version = version
|
||||
by = por
|
||||
button.ok = OK
|
||||
dialog.title = Acerca de
|
||||
contributors = Colaboradores:
|
||||
#In the translation, replace "english" with target language name
|
||||
translation.author.label = Autor da tradu\u00e7\u00e3o em Portugu\u00eas:
|
||||
#In the translation, insert your name here
|
||||
translation.author = MaGiC
|
||||
|
||||
@@ -1,24 +1,24 @@
|
||||
# Copyright (C) 2010-2014 JPEXS
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
version = versão
|
||||
by = por
|
||||
button.ok = OK
|
||||
dialog.title = Acerca de
|
||||
contributors = Colaboradores:
|
||||
#In the translation, replace "english" with target language name
|
||||
translation.author.label = Autor da tradu\u00e7\u00e3o em Portugu\u00eas Brasil:
|
||||
#In the translation, insert your name here
|
||||
translation.author = realmaster42
|
||||
# Copyright (C) 2010-2015 JPEXS
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
version = vers\u00c3\u00a3o
|
||||
by = por
|
||||
button.ok = OK
|
||||
dialog.title = Acerca de
|
||||
contributors = Colaboradores:
|
||||
#In the translation, replace "english" with target language name
|
||||
translation.author.label = Autor da tradu\u00e7\u00e3o em Portugu\u00eas Brasil:
|
||||
#In the translation, insert your name here
|
||||
translation.author = realmaster42
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright (C) 2010-2014 JPEXS
|
||||
# Copyright (C) 2010-2015 JPEXS
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -1,24 +1,24 @@
|
||||
# Copyright (C) 2010-2014 JPEXS
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
version = version
|
||||
by = av
|
||||
button.ok = Okej
|
||||
dialog.title = Om
|
||||
contributors = Bidragande:
|
||||
#In the translation, replace "english" with target language name
|
||||
translation.author.label = Skapare utav Svensk \u00f6vers\u00e4ttning:
|
||||
#In the translation, insert your name here
|
||||
translation.author = Capasha
|
||||
# Copyright (C) 2010-2015 JPEXS
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
version = version
|
||||
by = av
|
||||
button.ok = Okej
|
||||
dialog.title = Om
|
||||
contributors = Bidragande:
|
||||
#In the translation, replace "english" with target language name
|
||||
translation.author.label = Skapare utav Svensk \u00f6vers\u00e4ttning:
|
||||
#In the translation, insert your name here
|
||||
translation.author = Capasha
|
||||
|
||||
@@ -1,24 +1,24 @@
|
||||
# Copyright (C) 2010-2014 JPEXS
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
version = \u0432\u0435\u0440\u0441\u0456\u044f
|
||||
by = \u0430\u0432\u0442\u043e\u0440:
|
||||
button.ok = \u0413\u0430\u0440\u0430\u0437\u0434
|
||||
dialog.title = \u041f\u0440\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u0443
|
||||
contributors = \u041f\u043e\u0434\u044f\u043a\u0438:
|
||||
#In the translation, replace "english" with target language name
|
||||
translation.author.label = \u0410\u0432\u0442\u043e\u0440 \u0443\u043a\u0440\u0430\u0457\u043d\u0441\u044c\u043a\u043e\u0433\u043e \u043f\u0435\u0440\u0435\u043a\u043b\u0430\u0434\u0443:
|
||||
#In the translation, insert your name here
|
||||
translation.author = pepka
|
||||
# Copyright (C) 2010-2015 JPEXS
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
version = \u0432\u0435\u0440\u0441\u0456\u044f
|
||||
by = \u0430\u0432\u0442\u043e\u0440:
|
||||
button.ok = \u0413\u0430\u0440\u0430\u0437\u0434
|
||||
dialog.title = \u041f\u0440\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u0443
|
||||
contributors = \u041f\u043e\u0434\u044f\u043a\u0438:
|
||||
#In the translation, replace "english" with target language name
|
||||
translation.author.label = \u0410\u0432\u0442\u043e\u0440 \u0443\u043a\u0440\u0430\u0457\u043d\u0441\u044c\u043a\u043e\u0433\u043e \u043f\u0435\u0440\u0435\u043a\u043b\u0430\u0434\u0443:
|
||||
#In the translation, insert your name here
|
||||
translation.author = pepka
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright (C) 2010-2014 JPEXS
|
||||
# Copyright (C) 2010-2015 JPEXS
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright (C) 2010-2014 JPEXS
|
||||
# Copyright (C) 2010-2015 JPEXS
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright (C) 2010-2014 JPEXS
|
||||
# Copyright (C) 2010-2015 JPEXS
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright (C) 2010-2014 JPEXS
|
||||
# Copyright (C) 2010-2015 JPEXS
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright (C) 2010-2014 JPEXS
|
||||
# Copyright (C) 2010-2015 JPEXS
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright (C) 2010-2014 JPEXS
|
||||
# Copyright (C) 2010-2015 JPEXS
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright (C) 2010-2014 JPEXS
|
||||
# Copyright (C) 2010-2015 JPEXS
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright (C) 2010-2014 JPEXS
|
||||
# Copyright (C) 2010-2015 JPEXS
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright (C) 2010-2014 JPEXS
|
||||
# Copyright (C) 2010-2015 JPEXS
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright (C) 2010-2014 JPEXS
|
||||
# Copyright (C) 2010-2015 JPEXS
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright (C) 2010-2014 JPEXS
|
||||
# Copyright (C) 2010-2015 JPEXS
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright (C) 2010-2014 JPEXS
|
||||
# Copyright (C) 2010-2015 JPEXS
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright (C) 2010-2014 JPEXS
|
||||
# Copyright (C) 2010-2015 JPEXS
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright (C) 2010-2014 JPEXS
|
||||
# Copyright (C) 2010-2015 JPEXS
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright (C) 2010-2014 JPEXS
|
||||
# Copyright (C) 2010-2015 JPEXS
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright (C) 2010-2014 JPEXS
|
||||
# Copyright (C) 2010-2015 JPEXS
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright (C) 2010-2014 JPEXS
|
||||
# Copyright (C) 2010-2015 JPEXS
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright (C) 2010-2014 JPEXS
|
||||
# Copyright (C) 2010-2015 JPEXS
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright (C) 2010-2014 JPEXS
|
||||
# Copyright (C) 2010-2015 JPEXS
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright (C) 2010-2014 JPEXS
|
||||
# Copyright (C) 2010-2015 JPEXS
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright (C) 2010-2014 JPEXS
|
||||
# Copyright (C) 2010-2015 JPEXS
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright (C) 2010-2014 JPEXS
|
||||
# Copyright (C) 2010-2015 JPEXS
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright (C) 2010-2014 JPEXS
|
||||
# Copyright (C) 2010-2015 JPEXS
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright (C) 2010-2014 JPEXS
|
||||
# Copyright (C) 2010-2015 JPEXS
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright (C) 2010-2014 JPEXS
|
||||
# Copyright (C) 2010-2015 JPEXS
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright (C) 2010-2014 JPEXS
|
||||
# Copyright (C) 2010-2015 JPEXS
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright (C) 2010-2014 JPEXS
|
||||
# Copyright (C) 2010-2015 JPEXS
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright (C) 2010-2014 JPEXS
|
||||
# Copyright (C) 2010-2015 JPEXS
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright (C) 2010-2014 JPEXS
|
||||
# Copyright (C) 2010-2015 JPEXS
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright (C) 2010-2014 JPEXS
|
||||
# Copyright (C) 2010-2015 JPEXS
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright (C) 2010-2014 JPEXS
|
||||
# Copyright (C) 2010-2015 JPEXS
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright (C) 2010-2014 JPEXS
|
||||
# Copyright (C) 2010-2015 JPEXS
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright (C) 2010-2014 JPEXS
|
||||
# Copyright (C) 2010-2015 JPEXS
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -1,68 +1,68 @@
|
||||
# Copyright (C) 2010-2014 JPEXS
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
shapes = Formes
|
||||
shapes.svg = SVG
|
||||
shapes.png = PNG
|
||||
shapes.canvas = HTML5 Canvas
|
||||
|
||||
texts = Textes
|
||||
texts.plain = Texte brut
|
||||
texts.formatted = Texte format\u00e9
|
||||
texts.svg = SVG
|
||||
|
||||
images = Images
|
||||
images.png_jpeg = PNG/JPEG
|
||||
images.png = PNG
|
||||
images.jpeg = JPEG
|
||||
|
||||
movies = Vid\u00e9os
|
||||
movies.flv = FLV (Aucun son)
|
||||
|
||||
sounds = Sons
|
||||
sounds.mp3_wav_flv = MP3/WAV/FLV
|
||||
sounds.flv = FLV (Audio seulement)
|
||||
sounds.mp3_wav = MP3/WAV
|
||||
sounds.wav = WAV
|
||||
|
||||
scripts = Scripts
|
||||
scripts.as = ActionScript
|
||||
scripts.pcode = Assembleur
|
||||
scripts.pcode_hex = Assembleur hexad\u00e9cimal
|
||||
scripts.hex = Hexad\u00e9cimal
|
||||
|
||||
binaryData = Donn\u00e8es binaires
|
||||
binaryData.raw = Raw
|
||||
|
||||
dialog.title = Exportation...
|
||||
|
||||
button.ok = OK
|
||||
button.cancel = Annuler
|
||||
|
||||
morphshapes = Images anim\u00e8es
|
||||
morphshapes.gif = GIF
|
||||
morphshapes.svg = SVG
|
||||
morphshapes.canvas = Toile HTML5
|
||||
|
||||
frames = Image
|
||||
frames.png = PNG
|
||||
frames.gif = GIF
|
||||
frames.avi = AVI
|
||||
frames.svg = SVG
|
||||
frames.canvas = Toile HTML5
|
||||
frames.pdf = PDF
|
||||
|
||||
fonts = Polices de caract\u00e9res
|
||||
fonts.ttf = TTF
|
||||
fonts.woff = WOFF
|
||||
# Copyright (C) 2010-2015 JPEXS
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
shapes = Formes
|
||||
shapes.svg = SVG
|
||||
shapes.png = PNG
|
||||
shapes.canvas = HTML5 Canvas
|
||||
|
||||
texts = Textes
|
||||
texts.plain = Texte brut
|
||||
texts.formatted = Texte format\u00e9
|
||||
texts.svg = SVG
|
||||
|
||||
images = Images
|
||||
images.png_jpeg = PNG/JPEG
|
||||
images.png = PNG
|
||||
images.jpeg = JPEG
|
||||
|
||||
movies = Vid\u00e9os
|
||||
movies.flv = FLV (Aucun son)
|
||||
|
||||
sounds = Sons
|
||||
sounds.mp3_wav_flv = MP3/WAV/FLV
|
||||
sounds.flv = FLV (Audio seulement)
|
||||
sounds.mp3_wav = MP3/WAV
|
||||
sounds.wav = WAV
|
||||
|
||||
scripts = Scripts
|
||||
scripts.as = ActionScript
|
||||
scripts.pcode = Assembleur
|
||||
scripts.pcode_hex = Assembleur hexad\u00e9cimal
|
||||
scripts.hex = Hexad\u00e9cimal
|
||||
|
||||
binaryData = Donn\u00e8es binaires
|
||||
binaryData.raw = Raw
|
||||
|
||||
dialog.title = Exportation...
|
||||
|
||||
button.ok = OK
|
||||
button.cancel = Annuler
|
||||
|
||||
morphshapes = Images anim\u00e8es
|
||||
morphshapes.gif = GIF
|
||||
morphshapes.svg = SVG
|
||||
morphshapes.canvas = Toile HTML5
|
||||
|
||||
frames = Image
|
||||
frames.png = PNG
|
||||
frames.gif = GIF
|
||||
frames.avi = AVI
|
||||
frames.svg = SVG
|
||||
frames.canvas = Toile HTML5
|
||||
frames.pdf = PDF
|
||||
|
||||
fonts = Polices de caract\u00e9res
|
||||
fonts.ttf = TTF
|
||||
fonts.woff = WOFF
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright (C) 2010-2014 JPEXS
|
||||
# Copyright (C) 2010-2015 JPEXS
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright (C) 2010-2014 JPEXS
|
||||
# Copyright (C) 2010-2015 JPEXS
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright (C) 2010-2014 JPEXS
|
||||
# Copyright (C) 2010-2015 JPEXS
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright (C) 2010-2014 JPEXS
|
||||
# Copyright (C) 2010-2015 JPEXS
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright (C) 2010-2014 JPEXS
|
||||
# Copyright (C) 2010-2015 JPEXS
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright (C) 2010-2014 JPEXS
|
||||
# Copyright (C) 2010-2015 JPEXS
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -1,41 +1,41 @@
|
||||
# Copyright (C) 2010-2014 JPEXS
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
shapes = Former
|
||||
shapes.svg = SVG
|
||||
|
||||
texts = Texter
|
||||
texts.plain = Oformaterad text
|
||||
texts.formatted = Formaterad text
|
||||
|
||||
images = Bilder
|
||||
images.png_jpeg = PNG/JPEG
|
||||
|
||||
movies = Filmer
|
||||
movies.flv = FLV (Inget Ljud)
|
||||
|
||||
sounds = Ljud
|
||||
sounds.mp3_wav_flv = MP3/WAV/FLV
|
||||
sounds.flv = FLV (Bara ljud)
|
||||
|
||||
scripts = Scripts
|
||||
scripts.as = AS
|
||||
scripts.pcode = P-code
|
||||
scripts.pcode_hex = P-code med Hex
|
||||
scripts.hex = Hex
|
||||
|
||||
dialog.title = Exportera...
|
||||
|
||||
button.ok = Godk\u00e4nn
|
||||
button.cancel = Avbryt
|
||||
# Copyright (C) 2010-2015 JPEXS
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
shapes = Former
|
||||
shapes.svg = SVG
|
||||
|
||||
texts = Texter
|
||||
texts.plain = Oformaterad text
|
||||
texts.formatted = Formaterad text
|
||||
|
||||
images = Bilder
|
||||
images.png_jpeg = PNG/JPEG
|
||||
|
||||
movies = Filmer
|
||||
movies.flv = FLV (Inget Ljud)
|
||||
|
||||
sounds = Ljud
|
||||
sounds.mp3_wav_flv = MP3/WAV/FLV
|
||||
sounds.flv = FLV (Bara ljud)
|
||||
|
||||
scripts = Scripts
|
||||
scripts.as = AS
|
||||
scripts.pcode = P-code
|
||||
scripts.pcode_hex = P-code med Hex
|
||||
scripts.hex = Hex
|
||||
|
||||
dialog.title = Exportera...
|
||||
|
||||
button.ok = Godk\u00e4nn
|
||||
button.cancel = Avbryt
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user